为什么我们在charAt(i)旁边使用-'0?

时间:2012-09-15 14:47:56

标签: java string

我读了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; 
 }

谢谢你。 欢呼声。

5 个答案:

答案 0 :(得分:5)

因为string.charAt(i)返回char。但puzint[]

因此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并将其转换为整数值。