Посмотрите, пожалуйста, со стороны: прога не реагирует на ввод текста с клавиатуры, точнее, не кидает NumberFormatException, а просто через секунд 10-15 после ввода текста выдает OutOfMemory Exception. Я в своей логике не вижу ошибки (ох уж эта самовлюблённость). Но явно я что-то не доделал где-то, раз не работает как надо.
public class Solution {
public static void main(String[] args) {
readData();
}
public static void readData() {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<Integer>();
try{
int x = Integer.parseInt(r.readLine());
for (int i = 0; i < list.size()+1;i++)
{
list.add(x);
}
}
catch(NumberFormatException | IOException e)
{
for (int j = 0; j < list.size()-1;j++)
{
System.out.println(list.get(j));
}
}
//напишите тут ваш код
}
}
Алексей Баранов
18 уровень
NumberFormatException не ловит, зато выдаёт OutOfMemoryException. В чём ошибка?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2020490
1 февраля 2020, 16:25решение
Считывать число нужно в цикле.
А так у тебя бесконечно добавляет первое число в лист (х).
for (; true; )
list.add(Integer.parse.......
+2
Алексей Баранов
1 февраля 2020, 22:35
Спасибо. Переставил считывание в цикл for, задача решилась.
0
ГоффMaster
1 февраля 2020, 16:04
Вот здесь ничего не смущает? Чему равен list.size() при энном проходе цикла?
0
Алексей Баранов
1 февраля 2020, 22:34
Бесконечности. Но в условиях и не сказано, что цикл должен быть конечным.
0
ГоффMaster
1 февраля 2020, 22:39
Ну тогда чему же вы удивляетесь - у вас бесконечный цикл, время его работы ограничено только размером памяти вашего компьютера. Когда она заканчивается, он выбрасывает ошибку OutOfMemory и останавливается.
0