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

How can I compare a string using or ||...

//当用户键入 y 或 n.. 时,我需要中断 while 循环。但到目前为止,我只能为一个 letter/string 获取它。

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();
  }

我确定之前有人回答过这个问题,但我找不到了。

您的 if 语句显示 "if it's not y or n",这将始终为真,因为不能同时 "y" 和 "n"。

您想使用 "and",而不是 "or"。

当条件为真时,执行此循环。

假设有人输入 "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"))

I need the while loop to break when the user types y OR n

那么你的条件应该是:

while (!coffeeYorN.equals("y") && !coffeeYorN.equals("n"))

或者等效的,但更清晰一点的版本,我认为这是你想要做的:

while (!(coffeeYorN.equals("y") || coffeeYorN.equals("n")))

让我们看看真相table:

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),它才会停止,这永远不会发生。