我写了一个这样的for循环:
for(int i = 0; (char) System.in.read() != 's'; i++){
System.out.print(i);
}
我希望程序能够保持打印数字,直到我在键盘上输入s
。但是,每次输入一个字母时,我都会在命令提示符下输入three numbers
:
a
012
q
345
每个字母输入后,控制台上只应打印一个数字,但有三个。为什么呢?
答案 0 :(得分:3)
正如您的几位评论者所述,问题不在于for()循环,而在于System.in.read(),它还会将输入流中的回车符/换行符作为字符提供(它们也是为什么你的输出分布在几行上,而不是一行上的所有内容)
答案 1 :(得分:2)
就像Brian在评论中所说,这是因为输入是缓冲的。当您键入a
然后按Enter键时,输入键正在刷新缓冲区,您将看到循环执行3次。对于第一个字符a
,以及表示新行和回车字符的\n
和\r
字符的两次以上。