подсчет букв в массиве (java) - PullRequest
1 голос
/ 31 октября 2010

уровень: начинающий

Ниже приведен фрагмент кода, который считает буквы в массиве. Как вы говорите это по-английски?

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 ]

1 голос
/ 31 октября 2010

Попробуйте посмотреть на это так:

int letterPositionInCountArray = letters[i] - 'a'; // i.e for a - 0, b - 1 etc
counts[letterPositionInCountArray]++; // increment that position 

Кстати, лучше использовать метод [цифра] [1].

[1]: http://download.oracle.com/javase/6/docs/api/java/lang/Character.html#digit(char, int)

0 голосов
/ 31 октября 2010

Что здесь происходит, так это то, что буква a представляет собой символ, который имеет целочисленное значение 97.

Итак, взяв символьное значение и вычтя значение ascii из 'a', мы получаем нулевую базу массива. Таким образом, для каждого символа он увеличивает значение в массиве (помните, что все значения массива в массиве целых чисел начинаются с нуля).

Таким образом, он увеличивает количество соответствующих символов в массиве при каждом обнаружении символа.

0 голосов
/ 31 октября 2010

letters[i] - это некоторый ascii-код, представляющий букву, скажем, x. Тогда - 'a' работает следующим образом: если letters[i] == 'a', это будет означать 0 (потому что x-x = 0) Если letters[i] == 'b' (x + 1), то это будет означать 1 (потому что x + 1-x = 1). Таким образом, вы увеличиваете значение в позиции letters[i] - 'a'.

0 голосов
/ 31 октября 2010

Код увеличивает элемент массива counts.

См. Оператор приращения Postfix ++ в Спецификации языка Java для получения дополнительной информации об этом операторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...