SOS !Встречаемость символов! 8 уровень, 11 лекция

Решил эту задачу, проверил, все работает, но валидатор отправил меня в далекое плаванье с моим решением. Подскажите, пожалуйста, что не так, а то у меня уже третий день горит.
Вот код:
public class Solution {
public static void main(String[] args) throws Exception{
TreeMap<Integer, Integer> map = new TreeMap<>();
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
while (reader.ready()) {
char[] array = reader.readLine().toCharArray();
for (char letter: array) {
if(map.get((int)letter) == null)
map.put((int)letter, 1);
else {
int a = map.get((int)letter);
a++;
map.put((int)letter, a);
}
}
}
reader.close();
char a;
int i;
for (Map.Entry<Integer, Integer> pair: map.entrySet()) {
i = pair.getKey();
a = (char) i;
System.out.println( a + " " + pair.getValue());
}
reader.close();
}
}
Говорит, мол, вывод должен быть отсортирован по возрастанию кода ASCII. Но он и так отсортирован, в этом и суть!

8 комментариев

fatfaggy
а полное условие можно?
fatfaggy
  • fatfaggy
  • 0
  • Комментарий отредактирован 2018-01-07 01:39:12 пользователем fatfaggy
и ваш ввод, и ваш вывод)

и сразу хотел уточнить что у вас является ключем в мапе?)

и главный вопрос, почему отказались от идеи добавлять слова в список, а потом просто отсортировать его?)
zaxarello
Я добавляю в список коды символов в виде ключа, что бы TreeMap их отсортировал в порядке возрастания. Потом, на выходе, преобразую коды обратно в символы.
Условие:
Программа запускается с одним параметром — именем файла, который содержит английский текст.
Посчитать частоту встречания каждого символа.
Отсортировать результат по возрастанию кода ASCII (почитать в инете).

Пример:
','=44, 's'=115, 't'=116.

Вывести на консоль отсортированный результат:
[символ1] частота1
[символ2] частота2
Закрыть потоки.
zaxarello
Хотя, я даже тут лишнего накрутил. Символы можно и не переводить в код:
public class Solution {
public static void main(String[] args) throws Exception{
TreeMap<Character, Integer> map = new TreeMap<>();
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
while (reader.ready()) {
char[] array = reader.readLine().toCharArray();
for (char letter: array) {
if(map.get(letter) == null)
map.put(letter, 1);
else {
int a = map.get(letter);
a++;
map.put(letter, a);
}
}
}
reader.close();
for (Map.Entry<Character, Integer> pair: map.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
}
}
Но валидатор все равно беснуется всё по тому же пункту.
fatfaggy
вы сейчас выводите в формате:
а 27

попробуйте оформить вывод в формате
[a] 27
zaxarello
Да я уже пробовал, проблема, к сожалению, не в этом.
fatfaggy
  • fatfaggy
  • 0
  • Комментарий отредактирован 2018-01-08 13:32:25 пользователем fatfaggy
исключения проходили уже? обрабатывать их пробовали? обычно хотят чтоб даже если что-то пойдет не так, то потоки были закрыты
realcorwin
Условие у задачи есть? :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.