JavaRush/Java блог/Архив info.javarush/SOS !Встречаемость символов! 8 уровень, 11 лекция
zaxarello
40 уровень

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

Статья из группы Архив info.javarush
участников
Решил эту задачу, проверил, все работает, но валидатор отправил меня в далекое плаванье с моим решением. Подскажите, пожалуйста, что не так, а то у меня уже третий день горит. Вот код: public class Solution { public static void main(String[] args) throws Exception{ TreeMap 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 pair : map.entrySet()) { i = pair.getKey(); a = (char) i; System.out.println( a + " " + pair.getValue()); } reader.close(); } } Говорит, мол, вывод должен быть отсортирован по возрастанию кода ASCII. Но он и так отсортирован, в этом и суть!
Комментарии (8)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
realcorwin
Уровень 14
9 января 2018, 02:04
Условие у задачи есть? :)
fatfaggy
Уровень 26
7 января 2018, 01:36
а полное условие можно?
fatfaggy
Уровень 26
7 января 2018, 01:39
и ваш ввод, и ваш вывод)

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

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

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

Вывести на консоль отсортированный результат:
[символ1] частота1
[символ2] частота2
Закрыть потоки.
zaxarello
Уровень 40
7 января 2018, 13:07
Хотя, я даже тут лишнего накрутил. Символы можно и не переводить в код:
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
Уровень 26
7 января 2018, 14:51
вы сейчас выводите в формате:
а 27

попробуйте оформить вывод в формате
[a] 27
zaxarello
Уровень 40
8 января 2018, 13:12
Да я уже пробовал, проблема, к сожалению, не в этом.
fatfaggy
Уровень 26
8 января 2018, 13:32
исключения проходили уже? обрабатывать их пробовали? обычно хотят чтоб даже если что-то пойдет не так, то потоки были закрыты