![](/img/trans.png)
[英]InputStreamReader, Buffered Reader, Java issue with reading standard input
[英]Testing a buffered reader reading from input stream
我在测试代码时遇到问题。 我认为问题与使用从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());
}
}
你的代码在第一个循环中出现了问题。
要解决此问题,只需将循环条件修改为下一个:
while (line != null && !line.isEmpty()) {
lines.push(line);
line = br.readLine();
}
只需按Enter键,您的循环就会退出。
或者您可以添加任何其他exit code
。 例如while (line != null && !line.equals("exit"))
。 因此,当您在控制台中输入exit code
(在上例中exit
)时,您的循环将停止,您将获得所需的输出。
您陷入了无限循环,因为以下条件永远不会评估为false:
while (line != null) {
lines.push(line);
line = br.readLine();
}
您的代码必须知道何时完成提供输入。 在Ubuntu上我必须输入:
Hello
World
比我确实击中Strg + D来表示EOS 。 之后我得到了输出:
Hello
World
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.