public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String nameFile = reader.readLine();
FileInputStream fileInputStream = new FileInputStream(nameFile);
ArrayList<Integer> list = new ArrayList<>();
while (fileInputStream.available() > 0) {
int num = Integer.parseInt(reader.readLine());
if (num % 2 == 0)
list.add(num);
}
reader.close();
fileInputStream.close();
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
Александр
17 уровень
Подскажите пожалуйста, Exception For input string: ""
Архивный
Комментарии (16)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alexandr Stolyarenko
15 июня 2018, 21:46
Дык вы не из файла читать пытаетесь, а с клавиатуры...
0
Александр
15 июня 2018, 22:06
int num = Integer.parseInt(reader.readLine()); - Александр вот тут ошибка, или все нужно переделывать?
0
Alexandr Stolyarenko
15 июня 2018, 22:09
Ошибка у вас возникает потому что наличие данных для чтения вы проверяете в файле, а читаете при этом из консоли без каких-либо проверок. Если вы это спрашивали.
0
Александр
15 июня 2018, 22:17
такую проверку нужно?
while (fileInputStream.available() > 0) {
String s = reader.readLine();
if (s != "") {
int num = Integer.parseInt(s);
if (num % 2 == 0)
list.add(num);
} break;
}
0
Alexandr Stolyarenko
15 июня 2018, 22:21
Определитесь откуда вам нужно считывать числа. Нет смысла проверять наличие доступных данных в файле если вы собираетесь считывать информацию с клавиатуры и наоборот.
0
Александр
15 июня 2018, 22:48
Непонятное условие:
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел. - т.е. в файле уже должны быть числа так?
3. Вывести на консоль только четные, отсортированные по возрастанию.
Требования:
1. Программа должна считывать данные с консоли.
2. Программа должна создавать FileInputStream для введенной с консоли строки. - что это значит? мы заполняем файл сами числами через консоль?
0
Andrey
16 июня 2018, 01:42
введенная с консоли строка - это путь к файлу с числами
0
Егор Деченко
16 июня 2018, 02:57
Вы должны считывать числа из файла. Т. е. используя fileInputStream
Я, например, создал новый BufferedReader и запихнул его туда.
0
Александр
16 июня 2018, 10:32
InputStream fileInputStream = new FileInputStream(nameFile); // я же тут создаю поток
ArrayList<Integer> list = new ArrayList<Integer>();
while (fileInputStream.available() > 0) {
int num = fileInputStream.read(); // тут считываю файл
if (num % 2 == 0)
list.add(num);
}
0
Andrey
16 июня 2018, 11:26
все верно
если остался вопрос должны ли быть в файле числа, то да, в файле должны быть числа, которые мы обрабатываем
0
Александр
16 июня 2018, 13:21
В файле в столбик есть цифры, но почему то вывод совсем другой.
0
Александр
16 июня 2018, 13:24
BufferedReader readFile = new BufferedReader(new InputStreamReader(new FileInputStream(nameFile)));
ArrayList<Integer> list = new ArrayList<Integer>();
while (readFile.ready()) {
int num = readFile.read();
if (num % 2 == 0) {
list.add(num);
}
}
все равно не катит
0
Andrey
16 июня 2018, 14:30
Если BufferedReader, тогда и читать файл можно(и нужно) построчно, а не побайтово. Одна строка - число.
0
Егор Деченко
16 июня 2018, 22:48
В вашем случае считывается по одному символу, т.е. "-2" как "-" и "2"; "10" - как "1" и "0"
Используйте метод:
+1
Александр
17 июня 2018, 11:40
Спасибо тебе добрый человек!
0
Александр
15 июня 2018, 20:33
Постоянно вылетает:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at com.javarush.task.task13.task1326.Solution.main(Solution.java:21)
0