首页 > 解决方案 > IO 延迟导致 JAVA 中 for 循环中的 2 次迭代

问题描述

我正在测试一段代码,遇到了一些有趣的事情,我需要一些专家的意见。

一个简单的程序在输入时停止循环,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);
        }
    }

输出:

在此处输入图像描述

标签: javafor-loop

解决方案


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

  • a
  • \n

但是,当您阅读 a 时char,它会一个接一个地读取。因此,它循环了两次。


推荐阅读