如何使用或||来比较字符串...

时间:2015-04-22 03:50:21

标签: java string while-loop operators

//当用户输入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();
  }

3 个答案:

答案 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 YN都不为真时才会继续循环,并停止所有其他情况。您采用的方式是,只有当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"))