BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String filePath = bufferedReader.readLine();
FileInputStream fis = new FileInputStream(filePath);
List<Integer> arrayList = new ArrayList<>();
Integer num = 0;
while (fis.available() >0){
num = fis.read();
arrayList.add(num);
}
Arrays.sort(arrayList.stream().toArray());
for (Integer entry :
arrayList) {
if (entry %2 ==0){
System.out.println(entry);
}
}
fis.close();
}
Компилятор выводит какие то числа, которых в моём файле вообще нет.
Подскажите в чём перемудрил? Карбофос Огарин
14 уровень
Что то тут не так
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил
14 апреля 2021, 19:48решение
Также, могу предложить вариант, которым решал я - читать из файла построчно.
В вашем случае это будет примерно так:
И да, поскольку вы кладёте байты не в массив, а в коллекцию, то и сортировать нужно с помощью
Удачи! +2
Карбофос Огарин
15 апреля 2021, 10:04
Большое спасибо!
0
Игорь
13 апреля 2021, 16:11
Ты считываешь не числа из файла, а информацию в байтах, поэтому и выводятся такие числа. Пройдись сканером по файлу с помощью метода hasNextInt(). То есть ты должен пройтись сканером по содержимому файла, пока там есть числа. И сортировку списка, надо делать через Collections.
+1
Карбофос Огарин
15 апреля 2021, 10:34
Всё получилось, надо было чуть чуть код подправить.
Спасибо!
Получается сканнер конвертирует потоки байтов в нужный нам тип(int, String и тд)?
0
fog
13 апреля 2021, 16:11
Во-первых Вы из файла считываете непосредственно байты, из которых этот файл состоит.
Во-вторых, сортировка массива полученного с помощью метода toArray() вообще никак не влияет на список, из которого этот массив был получен.
0