Проблема в 34ой и 35ой строке. Как точно можно понять что файл закончился если имеем число у которого последняя цифра 0?
Я так понимаю что этот ноль не учитывается и .available() и .read() думают что это уже и есть конец файла и последний нолик теряется. Народ, хэлп!
package com.javarush.task.task13.task1326;
/*
Сортировка четных чисел из файла
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<Integer> list = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
InputStream inputStream = new FileInputStream(fileName);
while (inputStream.available() > 0) {
int data = inputStream.read();
char dataCh = (char) data;
String s = String.valueOf(dataCh);
if (s.equals("-")) {
String s1 = s + String.valueOf((char) inputStream.read());
s = (char) inputStream.read() + "";
while (!(s.equals("\r")) && !(s.equals("\n"))) {
s1 = s1 + s;
s = (char) inputStream.read() + "";
}
int i = Integer.parseInt(s1);
list.add(i);
} else {
String s2 = "";
while (!(s.equals("\r")) && !(s.equals("\n")) &&
(inputStream.available() >= 0) && (inputStream.read() != -1)) {
s2 = s2 + s;
s = String.valueOf((char) inputStream.read());
}
if(!s2.equals("")) {
int a = Integer.parseInt(s2);
list.add(a);
}
}
}
reader.close();
inputStream.close();
Integer[] arr = list.toArray(new Integer[list.size()]);
Arrays.sort(arr);
for (int i : arr
) {
if (i % 2 == 0)
System.out.println(i);
}
}
}