我正在尝试从String创建一个二维数组。但是当我尝试设置数组中元素的值时,我得到了一些奇怪的结果。 这里String s = 120453678;
public int[][] create2D(String s){
int[][] puzzle = new int[3][3];
int a;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
puzzle[i][j] = (int)s.charAt(i*3+j);
System.out.println(s.charAt(i*3+j));
System.out.println(i +" "+ j+" "+ puzzle[i][j]);
}
}
return puzzle;
}
我得到的输出是。不知道为什么它的49,50,51等
1
0 0 49
2
0 1 50
3
0 2 51
4
1 0 52
5
1 1 53
0
1 2 48
6
2 0 54
7
2 1 55
8
2 2 56
答案 0 :(得分:2)
您正在将角色转换为它的int表示。这就是你得到这个结果的原因。
puzzle[i][j] = (int)s.charAt(i*3+j);
ASCII表可以在下面参考。您可以看到49是字符的ASCII值&#39; 1&#39;。
要修复代码,您可以使用
puzzle[i][j] = Character.getNumericValue(s.charAt(i*3+j));