我需要从控制台读取输入,并使用InputStream以不同的顺序输出



我试过这样做,但它不起作用:

try (Reader reader = new BufferedReader(new InputStreamReader(System.in))) {
Stack<Character> stack = new Stack<>();
int i = reader.read();
while(i != -1) {
System.out.println("i = " + i + " = " + (char) i);
stack.push((char) i);
i = reader.read();
}
while(!stack.empty()) {
System.out.print(stack.pop());
}
}

一旦它进入while(i!=-1(循环,它就会进入无限循环。我发现,一旦程序到达文本末尾,最终I=10。但在Java文档中,我发现一旦Reader.read((到达文件末尾,它就会返回-1。这意味着我可以用while(I!=10(结束循环,但我想知道为什么它返回10,而不是-1。感谢回答

这可以通过检查i是否不等于10(行尾为ASCII(来修复。当我们提供像"abc"这样的输入并点击回车键时,我们实际上提供了asc\n。如果我们检查是否提供了\n(10(,我们可以打破循环。

while (i != -1 && i != 10) {
}

最新更新