我读了Hello Android书,我不懂这段功能的代码。
为什么我们在charAt(i)??
旁边使用-'0'static protected int[] fromPuzzleString(String string) {
int[] puz = new int[string.length()];
for (int i = 0; i < puz.length; i++) {
puz[i] = string.charAt(i) - '0' ;
}
return puz;
}
谢谢你。 欢呼声。
答案 0 :(得分:5)
因为string.charAt(i)
返回char
。但puz
是int[]
。
因此string.charAt(i) - '0'
将其转换为整数。
答案 1 :(得分:3)
您要做的是读取一个char,一次一个,将其转换为int并将其存储在数组中。
0的ASCII代码是48.所以你实际上要做的是从该特定位置的 char 的ASCII值中减去这个值。然后将数字结果存储在相应的索引中。
如果您尝试在循环中打印出来,可以自行验证,例如:
System.out.println((int)string.charAt(i));
System.out.println((int)'0');
答案 2 :(得分:1)
字符串是一个数字。此代码将字符串转换为整数数组
string.charAt(i)
将返回一个字符,string.charAt(i)- '0'
将返回实际的整数值
对于例如string =“12345”,此方法将返回一个整数数组[1,2,3,4,5]。
答案 3 :(得分:0)
我不知道这个特定操作的目的是什么,但在Java(以及许多编程语言)中,字符(char
)表示为整数值(在java中只有2个字节)。您可以将字符显式地转换为整数,如下所示:
int x = (int) 'a';
我认为这段代码做了类似的事情。 String.charAt()
函数返回char
,如果将其视为int,则其值为120(仅作为示例)。 '0'(作为char
)也有一个值。如果你减去它们,你会得到一个整数值。
答案 4 :(得分:0)
最好使用Character.isDigit(char)
和Character.getNumericValue(char)
来测试char并将其转换为整数值。