级别:初学者
下面的代码段是计算数组中字母数的代码的一部分。这个用英语怎么说?
counts[letters[i] - 'a']++ ;
我理解减法机制,但我有点用编写字母数增量的简写方式混淆。
完整代码:
class CountLettersInArray
{
public static void main(String[] args)
{
char[] letters = new char[100] ;
for (int i = 0 ; i < 100 ; i++ )
{
letters[i] = RandomCharacter.getRandomLowerCaseLetter() ;
}
int[] counts = new int[26] ;
for (int i = 0 ; i < 100 ; i++ )
{
counts[letters[i] - 'a']++ ;
}
for (int i = 0 ; i < 26 ; i++ )
{
System.out.print(counts[i] + " " ) ;
}
}
}
答案 0 :(得分:1)
试着这样看:
int letterPositionInCountArray = letters[i] - 'a'; // i.e for a - 0, b - 1 etc
counts[letterPositionInCountArray]++; // increment that position
顺便说一下,最好使用[digit] [1]方法。
[1]:http://download.oracle.com/javase/6/docs/api/java/lang/Character.html#digit(char,int)
答案 1 :(得分:0)
代码递增 counts
数组的元素。
有关此运营商的详情,请参阅Postfix Increment Operator ++中的Java Language Spec。
答案 2 :(得分:0)
letters[i]
是一些表示字母的ascii代码,比如x。然后- 'a'
的工作方式如下:if letters[i] == 'a'
则表示0(因为x-x = 0)。如果letters[i] == 'b'
(x + 1)那么它将意味着1(因为x + 1-x = 1)。因此,您正在增加位置letters[i] - 'a'
中的值。
答案 3 :(得分:0)
这里发生的是,字母 a 是一个字符,其整数值为97.
因此,通过获取字符值,并减去'a'的ascii值,它使数组基数为零。因此,对于每个字符,它都会递增数组中的值(请记住整数数组中的所有数组值都从零开始)。
因此,每次找到一个字符时,它会增加数组中的相关字符数。