Я хотел бы написать цикл try..catch в котором reader, определённый ранее инструкцией BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)) продолжал считывание строк до достижения конца этих строк... Как мне правильно Exception прописать? Или через while в котором if (s == null){break;}, но чтобы heap OutOfMemory не высплывал... короче, оба способа хочется понять
Ivan
12 уровень
readerLine() Exceptions и null
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергеев ВикторMaster
23 мая 2019, 20:04
читаете строку, если строка null или пустая (опционально) заканчивать цикл. Про пустоту надо учесть, что после пустой строки могут быть ещё строки
+1
Ivan
25 мая 2019, 09:56
Да, спасибо, я в целом понял, как с while(), а вот с try..catch пока не до конца
0
Стас Пасинков Software Developer в Zipy Master
25 мая 2019, 12:12
а зачем вам try..catch?
или просто из-за того, что метод ридлайн исключение кидает проверяемое?
ну тогда сначала трай, а внутри него цикл уже
+1
Ivan
25 мая 2019, 20:20
Да, а вот пустота и просто нажатый в консоли энтер, это похоже, не одно и то же... ридер хватает символ новой строки?
0
Ivan
25 мая 2019, 20:22
Для знания и незабывания конструкций... для практики... а то логика постижима, а с синтаксиса на питон иногда тянет...
0
Сергеев ВикторMaster
25 мая 2019, 22:33
все кастомизируется, но по дефолту нажатый enter это пустая строка. Ридер видя символ новой строки заканчивает чтение, следующая строка будет читаться без перевода строки в начале
0
Ivan
26 мая 2019, 16:23
Почему он тогда из цикла не вываливается (считывание не прекращает) ни так:
String s = null;
while(true){
s = reader.readLine();
list.add(s);
if (s == null){break;}
}
ни так:
String s = null;
while(true){
s = reader.readLine();
list.add(s);
if (s == "\n"){break;}
}
0
Сергеев ВикторMaster
26 мая 2019, 17:02
Посмотрите доку к методу и к источнику. Все зависит от их поведения
0