[英]Method returns int instead of char in java
就像標題中所說的那樣,我在編寫java的方法時遇到了問題。 這是代碼:
public static char shift(char c, int k) {
int x = c;
int d = c - 65 + k;
int e = c - 97 + k;
if (x > 64 && x < 91 && d >= 0 ) {
c = (char) ( d % 26 + 65);
} else if (x > 96 && x < 123 && e >= 0 ) {
c = (char) (e % 26 + 97 );
}
if (x > 64 && x < 91 && d < 0 ) {
c = (char) ( (d + 26) % 26 + 65);
} else if (x > 96 && x < 123 && e < 0 ) {
c = (char) ( (e + 26) % 26 + 97);
}
return c;
}
我想換一個字母的字母。 如果我這樣使用它(Caesar Chiper),代碼就能完美運行:
String s = " ";
String text = readString();
int k = read();
for (int i = 0; i < text.length(); i++) {
char a = text.charAt(i);
int c = a;
int d = a - 65 + k;
int e = a - 97 + k;
if (c > 64 && c < 91 && d >= 0 ) {
a = (char) ( d % 26 + 65);
} else if (c > 96 && c < 123 && e >= 0 ) {
a = (char) (e % 26 + 97 );
}
if (c > 64 && c < 91 && d < 0 ) {
a = (char) ( (d + 26) % 26 + 65);
} else if (c > 96 && c < 123 && e < 0 ) {
a = (char) ((e + 26) % 26 + 97);
}
s += a;
}
System.out.println(s);
}
我不明白為什么方法shift在我使用它時返回一個整數:shift('c',5); 它返回104,這是h的dec數。 我是java的初學者,也是個慢人。
先感謝您。
你的錯誤是你可能正在添加兩個字符的unicodes。 如果您執行以下操作,就會發生這種情況:
System.out.println('b' + 'a');
或者在你的情況下
System.out.println(shift('c', 5) + 'a');
要獲得所需的結果,請在打印前將char轉換為字符串:
String result = Character.toString(shift('c', 5));
System.out.println(result + 'a');
要么
System.out.println(shift('c', 5) + "a");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.