Java FileReader поместил ((char) i), k ++) в HashMap - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь прочитать содержимое файла и посчитать, как часто появляется каждая буква.Это моя ситуация:

public static void readFile() throws Exception {

    Map<Character, Integer> lcount = new HashMap<>();

    for (Character letter = 'A'; letter <= 'Z'; letter++) {
        lcount.put(letter, 0);
    }

    try {
        FileReader reader = new FileReader("file.txt");
        for (int i = 1; i != -1; i = reader.read()) {
            int k = lcount.get((char) i);
            lcount.put((char) i) ,k++);
        }
    } catch (FileNotFoundException e) {
        System.out.println("The file does not exist.");
    }
}

Я не могу использовать ((char) i, k ++) для увеличения количества букв в моем HashMap.

Исключение говорит: put (Символ, Integer) в Map нельзя применить к (char)

Как я могу прочитать значение типа Character в местоположении i и использовать его в качестве ключа для помещения значения в мой HashMap?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Благодаря @Ferrybig.Я просто пропустил "(". Я думал, что это был тип переменной.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

без метода get ():

for (int i = 1; i != -1; i = reader.read()) {
    lcount.compute((char) i, (x, i) -> i + 1);
}
0 голосов
/ 24 октября 2018

Использование k + 1:

for (int i = 1; i != -1; i = reader.read()) {
    int k = lcount.get((char) i);
    lcount.put((char) i, k + 1);
}

k++ возвращает исходное значение k (до приращения).

Или:

for (int i = 1; i != -1; i = reader.read()) {
    lcount.put((char) i, lcount.get((char) i) + 1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...