关于for循环的困惑

时间:2015-12-06 02:24:46

标签: java

我写了一个这样的for循环:

for(int i = 0; (char) System.in.read() != 's'; i++){
    System.out.print(i);
}

我希望程序能够保持打印数字,直到我在键盘上输入s。但是,每次输入一个字母时,我都会在命令提示符下输入three numbers

a
012
q
345

每个字母输入后,控制台上只应打印一个数字,但有三个。为什么呢?

2 个答案:

答案 0 :(得分:3)

正如您的几位评论者所述,问题不在于for()循环,而在于System.in.read(),它还会将输入流中的回车符/换行符作为字符提供(它们也是为什么你的输出分布在几行上,而不是一行上的所有内容)

答案 1 :(得分:2)

就像Brian在评论中所说,这是因为输入是缓冲的。当您键入a然后按Enter键时,输入键正在刷新缓冲区,您将看到循环执行3次。对于第一个字符a,以及表示新行和回车字符的\n\r字符的两次以上。