![](/img/trans.png)
[英]JAVA: Algorithms : How can i perform Subtraction Operation in Encrypted Values
[英]How to perform ASCII subtraction in java
我有一個名為temp
的char[]
數組,其中僅包含a
, b
或c
。 現在,如果數組中的兩個相鄰字符是不同的,即temp[j]
和temp[j+1]
分別包含a
和b
,則需要將c
存儲在temp[j+1]
。
為此,我定義了
private static final int CHARSUM = 294;
這是a
, b
和c
的ASCII值之和。 我試圖從294
減去temp[j]
和temp[j+1]
和。
temp[j+1] = CHARSUM-(temp[j]+temp[j+1]);
如果其他值為a
和b
,則應存儲值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
是“真正的”整數,介於0
和65535
之間。 如果要將超出范圍的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.