BufferedReader виснет после ввода первой строки и заполняет внутренний массив пустыми строками. код же очень примитивен, в чем дело?

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 ;
        }//заполняет внутренний массив ридера нулями
        или
        while (reader.ready()) {
            s+=app;
        }//всегда false, цикл даже не начинается
//==================================================================================
        System.out.println("Мы считали с клавиатуры эту строку:");
        System.out.println(s);

    }

Ответы (1 шт):

Автор решения: had0uken

Исправил код, в соответствии вашему комментарию как должна работать программа. Обратите внимание на условие while. Я там использую пустую строку для выхода из цикла, потому что ваш цикл с null будет бесконечный, так как вы никогда не введете null через консоль. (Пустая строчка это не null)

public class Test {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = "";
        String app;

        while (!(app = reader.readLine()).equals("")) {
            s += app;
        }


        System.out.println("Мы считали с клавиатуры эту строку:");
        System.out.println(s);
    }
}
→ Ссылка