int数组在Java中不包含期望的值



我希望我的数组num包含字符串b中的每个字符这样的:

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

注意char '9'不同于整型9,

char a = '9'; 
int b = a;

对于像这样的代码,它将通过字母'9'的ASCII码将char '9'自动转换为int,在ASCII表中,'9'是第57个字母,因此自动转换将让int b赋值给值57。与char '1'类似的想法,int ASCII表,数字是49。

使用num[i] = b.charAt(i);行,您基本上将字符9转换为其十进制表示形式,即571也是如此,其十进制表示为49

如果你把你的int[] num变成char[] num,一切工作如预期。另外,使用String.valueOf()int转换为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);
}

相关内容

  • 没有找到相关文章

最新更新