Почему не принимает, отсортировано же
---------------------------------------------------------------
Встречаемость символов
Программа запускается с одним параметром - именем файла, который содержит английский текст.
Посчитать частоту встречания каждого символа.
Отсортировать результат по возрастанию кода ASCII (почитать в инете).
Пример:
','=44, 's'=115, 't'=116.
Вывести на консоль отсортированный результат:
[символ1] частота1
[символ2] частота2
Закрыть потоки.
Пример вывода:
, 19
- 7
f 361
Requirements:
1. Считывать с консоли ничего не нужно.
2. Создай поток для чтения из файла, который приходит первым параметром в main.
3. В файле необходимо посчитать частоту встречания каждого символа и вывести результат.
4. Выведенный в консоль результат должен быть отсортирован по возрастанию кода ASCII.
5. Поток для чтения из файла должен быть закрыт.
package com.javarush.task.task18.task1821;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
/*
Встречаемость символов
*/
public class Solution {
public static void main(String[] args) {
List<Character> characters = new ArrayList<>();
List<String> lines = new ArrayList<>();
Map<Character, Integer> characterIntegerMap = new TreeMap<>();
if(args.length == 0) return;
try(BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]))) {
while (bufferedReader.ready()) {
String str = bufferedReader.readLine();
char[] chars = str.toCharArray();
lines.add(str);
for (char aChar : chars) {
if (!characters.contains(aChar)) {
characters.add(aChar);
}
}
}
Collections.sort(characters);
for (char c : characters) {
int count = 0;
for (String s : lines) {
char[] ch = s.toCharArray();
for (char value : ch) {
if (c == value) {
count++;
}
}
}
characterIntegerMap.put(c, count);
}
for(Map.Entry<Character, Integer> pair : characterIntegerMap.entrySet()) {
System.out.println(pair.getKey() + " " + pair.getValue());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}