//当用户输入y OR n时我需要while循环中断..但到目前为止我只能得到一个字母/字符串。
Scanner user_input = new Scanner(System.in);
String name = user_input.next();
System.out.print("Would you like to order some coffee, "+name+"? (y/n)");
String coffeeYorN = user_input.next();
while (!coffeeYorN.equals("y")||!coffeeYorN.equals"n") //HERE IS MY ISSUE
{
System.out.println("Invalid response, try again.");
System.out.print("Would you like to order some coffee, "+name+"? (y/n)");
coffeeYorN = user_input.next();
}
答案 0 :(得分:2)
当用户键入y OR n
时,我需要使用while循环
然后你的情况应该是:
while (!coffeeYorN.equals("y") && !coffeeYorN.equals("n"))
或等效的,但更清晰的版本,我认为是你想要做的:
while (!(coffeeYorN.equals("y") || coffeeYorN.equals("n")))
让我们检查一下真值表:
Y - coffeeYorN.equals("y")
N - coffeeYorN.equals("n")
case Y N (!Y || !N) !(Y || N)
0 0 0 1 1
1 0 1 1 0
2 1 0 1 0
3 1 1 0 0
您希望条件评估为true
,并且只有在0
Y
或N
都不为真时才会继续循环,并停止所有其他情况。您采用的方式是,只有当coffeeYorN
同时等于"y"
和"n"
时才会停止(案例3
),这种情况永远不会发生。
答案 1 :(得分:1)
我确信之前已经回答了,但我找不到它。
你的if语句说“如果它不是y或n”,这将永远是真的,因为某些东西不能同时是“y”和“n”。
您想使用“和”,而不是“或”。
答案 2 :(得分:1)
条件为真时,执行此循环。
让我们说有人输入“n”......
你的条件说:
Is the input something other than "y"? Yes, it is "n", so I should execute the loop.
你需要这样的东西:while(!coffeeYorN.equals("y") && !coffeeYorN.equals("n"))