package com.javarush.task.task13.task1326;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
/*
Сортировка четных чисел из файла
*/
public class Solution {
public static void main(String[] args) throws IOException {
try(Scanner s = new Scanner(System.in); FileInputStream inputStream = new FileInputStream(s.nextLine());
BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream))) {
List<Integer> list = new ArrayList<>();
int ch;
while (buffer.ready()) {
if (Character.isDigit(ch = buffer.read()) && ch % 2 == 0)
list.add(ch);
}
Collections.sort(list);
list.forEach(System.out::println);
}
}
}Archy
1 уровень
Господа, подскажите, почему выводятся рандомные числа вместо тех, что в файле?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр
12 апреля 2023, 22:08
потому что ты в переменную ch кладешь ascii код числа вместо самого числа. используй Integer.parseInt(variable) . но это мало поможет пока ты читаешь побитово, лучше читать построчно buffer.readline()
0
ArchyExpert
13 апреля 2023, 10:22
На момент вопроса, я задание уже решил, считывая, как вы и сказали, построчно. Просто интересно, можно ли выполнить задание, считывая побитово, ведь, в теории, на одной строке может быть не одно число
0
Александр
14 апреля 2023, 18:58
можно, придется проверять что текущий символ это не пробел или ни какой-нибудь конец строки или перевод каретки и пока не встретишь такой символ записывать все что нашел в строку, а потом так же парсить в int . код присылать не буду) ты уже видел коды чисел, которые записывались у тебя вместо самих чисел, поэтому можешь найти таблицу ascii символов в интернете и проверять что текущий код не равен коду одного из них(не пробел, не перенос строки), а если будет равен, то считать число завершенным и читать следующее
0