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语句会运行。
答案 0 :(得分:0)
您的方法没有被调用,因为userInput.next()
仅返回下一个单词(即直到有空格)。您应该查看.nextLine()
或.useDelimiter()
来更改此行为并返回整行。
这也解释了为什么x减少两次-如果您键入“ go right”,则算作两个单独的.next()
。
答案 1 :(得分:0)
static
添加到method
,因为现在它是一个实例方法,不能从像main
这样的静态函数中调用。x != 0
。是可行的,但是在一个复杂的循环中,x
可以减少一次以上,它可能会传递0,然后变成负面,永不结束循环。改为选中x > 0
。for
循环代替while
。