为什么循环两次?为什么这些方法不运行?

时间:2019-11-07 06:15:26

标签: loops while-loop user-input

public static void main(String[] args) {

    Scanner userInput = new Scanner(System.in);
    int x = 20;
    String choice = "";
            while(x!=0) {

            System.out.println("What would you like to do? Enter help for commands.");
            choice = userInput.next().toLowerCase();

            if(choice.equals("go right")) method(); 
            if(choice.equals("go left")) method();
            if(choice.equals("go forwards")) method();
            if(choice.equals("go backwards")) method();
            if(choice.equals("help")) System.out.println("I can print!");

            x--;
            System.out.println("Value of x: " + x);

        }
}

上面的代码似乎运行了两次,在扫描程序再次要求用户输入之前,x减小了2。

 public void method(){
      System.out.println("methoding");
}

此外,从if语句调用该方法时不会运行,但print语句会运行。

2 个答案:

答案 0 :(得分:0)

您的方法没有被调用,因为userInput.next()仅返回下一个单词(即直到有空格)。您应该查看.nextLine().useDelimiter()来更改此行为并返回整行。

这也解释了为什么x减少两次-如果您键入“ go right”,则算作两个单独的.next()

答案 1 :(得分:0)

  1. 您必须将static添加到method ,因为现在它是一个实例方法,不能从像main这样的静态函数中调用。
  2. 不要检查x != 0是可行的,但是在一个复杂的循环中,x可以减少一次以上,它可能会传递0,然后变成负面,永不结束循环。改为选中x > 0
  3. 如果需要在循环结束时增加/减少循环控制变量,请使用for循环代替while