首页 > 解决方案 > for 循环意外迭代

问题描述

我是 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);
  
            }

    }

我的结果:

结果

我应该如何解决这个问题?

标签: for-loopuser-inputinputstream

解决方案


那是因为当你按下回车键时,它\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();
            }

    }

推荐阅读