Вопрос по задаче com.javarush.test.level18.lesson10.home06

Доброго времени суток! Возник вопрос по задаче. Решил таким способом (см. код). Вроде, все ок, но сервер не принимает. Можете навести на мысль? А то уже глаз замылился…

/* Встречаемость символов
Программа запускается с одним параметром - именем файла, который содержит английский текст.
Посчитать частоту встречания каждого символа.
Отсортировать результат по возрастанию кода ASCII (почитать в инете). Пример: ','=44, 's'=115, 't'=116
Вывести на консоль отсортированный результат:
[символ1]  частота1
[символ2]  частота2
Закрыть потоки. Не использовать try-with-resources

Пример вывода:
, 19
- 7
f 361
*/

public class Solution{
    public static void main(String[] args) throws IOException{

        HashMap<Integer,Integer> map = new HashMap<Integer, Integer>();

        for (int i = 0; i < 128; i++)
            map.put(i, 0);

        FileInputStream fileInputStream = new FileInputStream(args[0]);

        while (fileInputStream.available()>0){
            int i = fileInputStream.read();
            int count = map.get(i);
            count++;
            map.put(i,count);
        }

        for (Map.Entry<Integer,Integer> el:map.entrySet())
            if(el.getValue()>0){
                int i = el.getKey();
                System.out.println((char)i + " " + el.getValue());
            }

        fileInputStream.close();
    }
}

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

JuriMik
  • JuriMik
  • 0
  • Комментарий отредактирован 2017-02-01 02:44:25 пользователем JuriMik
А где задание?
SoerKosolapiy
Добавил
JuriMik
  • JuriMik
  • 0
  • Комментарий отредактирован 2017-02-01 03:15:23 пользователем JuriMik
Вроде как все работает. Попробуй цикл стандартно написать. Не факт, конечно, но вообще так писать for, if — это не очень хорошая практика ;-)
И второе предположение, это все же использовать обычный try-catch вместо проброса исключения
Если не поможет — я сдаюсь, вспоминая, что такое сервер и эти проверки )))
Alvisid
  • Alvisid
  • 0
  • Комментарий отредактирован 2017-02-01 09:16:07 пользователем Alvisid
Привет! Из Вики: Изначально (1963 год) ASCII была разработана для кодирования символов, коды которых помещались в 7 бит (128 символов; 27=128), при этом старший 7-й бит (нумерация с нуля) использовался для контроля ошибок, возникших при передаче данных. Со временем кодировка была расширена до 256 символов (28=256); коды первых 128 символов не изменились. ASCII стала восприниматься как половина 8-битной кодировки, а «расширенной ASCII» называли ASCII с задействованным 8-м битом (например, КОИ-8).
AlexSir
Согласен с Alvisid. И попробуй без всяких мап. Используй обычный массив
int[] buf = new int[255];
AlexAV
Делал через мап, но заполнял его только теми символами которые есть в файле, затем сортировка через treemap. Могу предположить, что валидатор ожидает что вы будете сортировать мап и тем самым «набъете» руку в сортировке )
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.