for循环意外迭代

for loop iterated unexpectedly

我是 Java 编程的新手,正在尝试自学这门语言。我想创建一个在输入 's' 时终止的程序,但令我困惑的是我的 for 循环在输入一个字母后迭代了两次?

我的代码:

public class Demo {
    public static void main(String[] args)
        throws java.io.IOException{

        int i;
        System.out.println("Press s to stop: ");
        for(i = 0; (char) System.in.read() != 's'; i++)
            {
                System.out.println("Pass #"+i);
  
            }

    }

我的结果:

我该如何解决这个问题?

嗯,这是因为当您按下回车键时,\n 也会进入输入流。

因此,一次迭代用于字母,另一次用于 \n 字符。

解决方案是:

public class Demo {
    public static void main(String[] args)
        throws java.io.IOException{

        int i;
        System.out.println("Press s to stop: ");
        char c = System.in.read();
        for(i = 0;  c != 's'; i++)
            {
                if(c == '\n') continue;
                System.out.println("Pass #"+i);
                c= System.in.read();
            }

    }