我在测试代码时遇到问题。我认为问题与使用从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());
}
}
答案 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