我希望我的字串 b 中每個字符的陣列 num coist 像這樣:
num[0] = 9;
num[1] = 1;
num[2] = 1;
num[3] = 9;
但不知何故,9 變成了 57,而 1 變成了 1。我不明白為什么。當我列印出b.charAt(i)數字是正確的,但是一旦我嘗試初始化陣列,數字就會改變。我也嘗試投射,(int)b.charAt(i)但這并沒有什么不同。為什么數字會改變?
int a = 9119;
String b = a "";
System.out.println(b);
int [] num = new int[b.length()];
String c = "";
for (int i = 0; i < b.length(); i )
{
System.out.println(b.charAt(i));
num[i] = b.charAt(i);
//c = (num[i] * num[i]) "";System.out.println(c);
}
for (int w : num)
{
System.out.println(w);
}
這是控制臺輸出:
9119
9
1
1
9
57
49
49
57
uj5u.com熱心網友回復:
請注意,字符 '9' 與 int 9 不同,
char a = '9';
int b = a;
對于這樣的代碼,它會通過字母“9”的ASCII碼自動將字符“9”轉換為int,在ASCII表中,“9”是第57個字母,所以自動轉換會讓我們的int b 賦給值 57。類似的想法對于 char '1',int ASCII 表,數字是 49。
uj5u.com熱心網友回復:
使用該行,num[i] = b.charAt(i);您基本上是將字符9轉換為其十進制表示形式,即57. 同樣是真正的1這十進制表示是49。
如果你把你int[] num變成char[] num一切都按預期作業。此外,用于String.valueOf()將 an 轉換int為 a String:
int a = 9119;
String b = String.valueOf(a);
System.out.println(b);
char[] num = new char[b.length()];
for (int i = 0; i < b.length(); i ) {
System.out.println(b.charAt(i));
num[i] = b.charAt(i);
}
for (char w : num) {
System.out.println(w);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342675.html
