java 中的 int 数组不包含预期值
int array in java wont contain expected value
我希望我的数组 num cosist 来自我的字符串 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
在行 num[i] = b.charAt(i);
中,您基本上是将字符 9
转换为其十进制表示形式,即 57
。 1
也是如此,十进制表示为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);
}
注意 char '9' 与 int 9 不同,
char a = '9';
int b = a;
对于这样的代码,它会通过字母'9'的ASCII码自动将char'9'转换为int,在ASCII table中,'9'是第57个字母,所以自动转换会让我们的 int b 赋值为 57。类似于 char '1' 的想法,int ASCII table,数字是 49.
我希望我的数组 num cosist 来自我的字符串 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
在行 num[i] = b.charAt(i);
中,您基本上是将字符 9
转换为其十进制表示形式,即 57
。 1
也是如此,十进制表示为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);
}
注意 char '9' 与 int 9 不同,
char a = '9';
int b = a;
对于这样的代码,它会通过字母'9'的ASCII码自动将char'9'转换为int,在ASCII table中,'9'是第57个字母,所以自动转换会让我们的 int b 赋值为 57。类似于 char '1' 的想法,int ASCII table,数字是 49.