Я создал файл на диске, в него от руки вбил значения:
5
8
11
3
2
10
Считал с него данные, записал в сортируемое множество, отсеял все нечётные.
При вводе прописываю путь к файлу:
C:\Users\...\JavaProjects\Solution_1326.txt
Всё работает, но странным образом. Валидатору как раз не нравится вывод, всё остальное он принимает.
И вот вывод моей программы:
10
48
50
56
Как я понимаю, поток считывает по одному байту, но...если так, то как заставить его выводить данные в точности, как в файле?
package com.javarush.task.task13.task1326;
/*
Сортировка четных чисел из файла
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел.
3. Вывести на консоль только четные, отсортированные по возрастанию.
Пример ввода:
5
8
11
3
2
10
Пример вывода:
2
8
10
Требования:
1. Программа должна считывать данные с консоли.
2. Программа должна вывести на экран все четные числа считанные из файла,
отсортированные по возрастанию.
3. Программа должна выводить данные на экран.
4. Программа должна закрывать поток чтения из файла(FileInputStream).
*/
import java.io.*;
import java.util.TreeSet;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
InputStream inStream = new FileInputStream(reader.readLine());
TreeSet<Integer> set = new TreeSet<>();
while (inStream.available() > 0)
{
int data = inStream.read();
set.add(data);
}
for (int a : set) {
if (a%2 == 0) System.out.println(a);
}
inStream.close();
}
}