Непредсказуемый BufferedReader
Суть программы проста:
- считать с консоли строки
- остановиться когда вводят пустую строку,
- все считанные строки сконкатенировать,
- вывести полученный результат на экран.
Но проблема в том, что BufferedReader почему- то ведет себя непредсказуемо, и более того, неверно. в онлайн компиляторе код ведет себя более корректно в чем может быть проблема?? в пример привожу 4 разных цикла, которые должны работать одинаково (по моему скромному мнению, конечно), но ведут себя совсем не так (поведение описано в комментариях над ними)
Буду благодарен)
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = ""; /// чтобы в консольне не видить null лучше инициализировать как пустую строчку
String app;
//======================================================================================================
// //заполняет массив ридера нулями и цикл никогда не завершается
// while ((app = reader.readLine()) != null) {
// s += app;
// }
//======================================================================================================
// //удается ввести только 2 строки, после чего цикл прерывается. в строку s заносится только первая введенная строка
// while (!(app = reader.readLine()).equals("")) {
// s += app;
// }
//======================================================================================================
// //если вывод закомментирован - ведет себя как предыдущий, если нет - все работает правильно и в строку s вносятся все введенные в консоль строки
// while (true) {
// app = reader.readLine();
// //System.out.println("line empty boolean " + app.isEmpty());
// if(app.isEmpty()) break;
// s += app;
// }
//======================================================================================================
// //тело цикла не выполняется никогда
// while (reader.ready()) {
// s+= reader.readLine();
// }
//======================================================================================================
System.out.println("Мы считали с клавиатуры эту строку:");
System.out.println(s);// я перенес сюда
}