IO延迟在JAVA中的for循环中导致2次迭代

时间:2018-07-04 07:05:06

标签: java for-loop

我正在测试一些代码,遇到了一些有趣的东西,而我需要专家的意见。

一个简单的程序,当输入为s时停止循环,但似乎在每个输入上循环都重复了两次,我想这是因为IO延迟。如果我错了请纠正我。

public static void main(String[] args) throws java.io.IOException {
        int i;
        System.out.println("Type s to stop.");
        for(i = 0; ; i++) {
            char value = (char) System.in.read();
            if(value=='s'){
                break;
            }
            System.out.println("Pass # " + i);
        }
    }

输出:

enter image description here

1 个答案:

答案 0 :(得分:2)

当您输入一个字符a作为输入时,实际上输入了两个字符。

  • a
  • \n

但是,当您读取char时,它会逐一读取。因此,它循环了两次。