Я создал файл на компе, поигрался, поменял значения, у меня все работает, что не нравится валидатору?
package com.javarush.task.task18.task1821;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.io.FileReader;
import java.io.IOException;
/*
Встречаемость символов
*/
public class Solution {
public static void main(String[] args) throws IOException {
HashMap<Integer, Integer> map = new HashMap<>(); // создаем мапу для будущих уникальных ключей и кол-вом их совпадений в файле
FileInputStream file = new FileInputStream(args[0]); // читаем путь к файлу через аргумент командной строки
while (file.available() > 0) { // читаем файл, пока не дойдем до конца файла
int count = 0; // частота встречания каждого символа (значние в маме)
int elem = file.read(); // читаем символ
if (map.containsKey(elem)) { // если в мапе есть совпадение по ключу
for (Map.Entry<Integer, Integer> entry : map.entrySet()) { // через Foreach проходимся по мапе и находим совпадение
if (entry.getKey() == elem) { // если нашли совпадение,
map.put(entry.getKey(), map.get(entry.getKey()) + 1); // инкрементируем значение найденного ключа
}
}
} else { // если ранее в мапе такого ключа не было,
map.put(elem, count); // добавляем новый ключ
}
}
file.close(); // закрываем поток чтения
TreeMap<Integer, Integer> sortedMap = new TreeMap<>(map); // создаем сортированую мапу и передаем в нее хэшмапу
for (Map.Entry<Integer, Integer> entry : sortedMap.entrySet()) { // проходимся по мапе
System.out.println((char) (int) entry.getKey() + " " + entry.getValue()); // выводим на экран результат в формате "[символ] частота"
}
}
}