测试从输入流读取的缓冲读取器

时间:2017-03-28 11:35:02

标签: java intellij-idea bufferedreader inputstreamreader

我在测试代码时遇到问题。我认为问题与使用从InputStreamReader读取的BufferedReader有关。 我使用IntelliJ并提供以下输入:

Hello
World!

为什么我的程序不打印任何内容?这是我的代码:

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    Deque<String> lines = new ArrayDeque<>();
    String line = br.readLine();

    while (line != null) {
        lines.push(line);
        line = br.readLine();
    }

    while (!lines.isEmpty()) {
        System.out.println(lines.pop());
    }
}

3 个答案:

答案 0 :(得分:3)

您的代码在第一个循环中出现了问题。

要解决此问题,只需将循环条件修改为下一个:

while (line != null && !line.isEmpty()) {
    lines.push(line);
    line = br.readLine();
}

然后当您点击 Enter 时,您的循环将退出。

或者您可以添加任何其他exit code。例如while (line != null && !line.equals("exit"))。因此,当您在控制台中输入exit code(上例中的exit)时,您的循环将停止,您将获得所需的输出。

答案 1 :(得分:1)

您陷入了无限循环,因为以下条件永远不会评估为false:

COLUMN_1

答案 2 :(得分:0)

您的代码必须知道您何时完成提供输入。在 Ubuntu 我必须输入:

Hello
World

比我点击 Strg + D 发信号 EOS 。之后我得到了输出:

Hello
World