Подскажите, пожалуйста. Решил с помощью BufferedReader(new FileReader(outputFileName));
Выглядит это так:
BufferedReader fileReader = new BufferedReader(new FileReader(outputFileName));
String currentString;
while((currentString = fileReader.readLine()) != null) {
list.add(Integer.parseInt(currentString));
}
fileReader.close();
Collections.sort(list);
for (Integer a : list) {
if (a % 2 == 0) System.out.println(a);
}
Но валидатору такое не нравится. Он пишет что решение должно быть с помощью FileInputStream. И вот здесь я немного поплыл и выдал с моей точки зрения очень громоздкое и дурацкое решение, которое тем ним менее работает, судя по дебагу.
FileInputStream fileReader = new FileInputStream(outputFileName);
int i;
String b = "";
// цикл пока не прочитаем до конца файла
while ((i = fileReader.read()) != -1) {
// если достигли символа перевода каретки i == 13, то строку парсим в инт и добавляем в коллекцию
if (i == 13) {
list.add(Integer.parseInt(b));
b = "";
}
// пропускаем символ переноса строки i == 10
else if (i != 10) {
// если встречаем знак минус i==45, то обрабатываем его отдельное
if (i == 45) b = b + "-";
// если i не минус, то считаем что это код цифры. Добавляем его числовое значение к строке
else b = b + Integer.toString(Character.getNumericValue(i));
}
}
fileReader.close();
Collections.sort(list);
for (Integer a : list) {
if (a % 2 == 0) System.out.println(a);
}
Однако это решение валидатору тоже не нравится, он пишет что программа выводит слишком мало строк. Может я очень невнимателен, но вывод у программы корректный.
Подскажите, что не так? Спасибо