簡體   English   中英

如何在Java中執行ASCII減法

[英]How to perform ASCII subtraction in java

我有一個名為tempchar[]數組,其中僅包含abc 現在,如果數組中的兩個相鄰字符是不同的,即temp[j]temp[j+1]分別包含ab ,則需要將c存儲在temp[j+1]

為此,我定義了

private static final int CHARSUM = 294;

這是abc的ASCII值之和。 我試圖從294減去temp[j]temp[j+1]和。

temp[j+1] = CHARSUM-(temp[j]+temp[j+1]);

如果其他值為ab ,則應存儲值c 但是在這里, 問題是:

不兼容的類型:從int到char的可能的有損轉換

我嘗試更改為:

  • private static final char CHARSUM = "294";
  • temp[j+1] = (char)CHARSUM-(temp[j]+temp[j+1]);
  • temp[j+1] = Character.getNumericValue(CHARSUM-(temp[j]+temp[j+1]));

但是,這些都沒有起作用,我沒有找到任何其他答案可以幫助我解決問題。 因此,任何解決此問題的幫助將不勝感激。 謝謝。

您可以將減法的結果轉換為char:

temp[j+1] = (char)(CHARSUM-(temp[j]+temp[j+1]));

在Java中, char是“真正的”整數,介於065535之間。 如果要將超出范圍的int分配給char變量,則需要顯式強制轉換。

例如

char c = 65535;        // ok
char c = 65536;        // doesn't compile
char c = (char) 65536; // compiles, but it's a lossy conversion

即使你的價值觀, CHARSUM-(temp[j]+temp[j+1]) 總是在這個范圍內,編譯器不能告訴大家,因為它不是一個編譯時間常數。 因此,您需要對整個表達式進行強制轉換:

temp[j+1] = (char) (CHARSUM-(temp[j]+temp[j+1]));

您的方法無效,原因如下:

  • "294"是一個String ,而不是一個int
  • CHARSUM僅應用於CHARSUM整個表達式仍然是int
  • getNumericValue返回一個int而不是char ,因此您必須進行強制轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM