计算数组中的字母(java)

时间:2010-10-31 16:41:18

标签: java syntax

级别:初学者

下面的代码段是计算数组中字母数的代码的一部分。这个用英语怎么说?

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] + " " ) ;
        }

    }
}

4 个答案:

答案 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值,它使数组基数为零。因此,对于每个字符,它都会递增数组中的值(请记住整数数组中的所有数组值都从零开始)。

因此,每次找到一个字符时,它会增加数组中的相关字符数。