如何使用或 ||... 比较字符串
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
的情况下继续运行,当 Y
或 N
都不为真时,循环停止对于所有其他情况。按照您的方式,只有当 coffeeYorN
同时等于 "y"
和 "n"
时(情况 3
),它才会停止,这永远不会发生。
//当用户键入 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
的情况下继续运行,当 Y
或 N
都不为真时,循环停止对于所有其他情况。按照您的方式,只有当 coffeeYorN
同时等于 "y"
和 "n"
时(情况 3
),它才会停止,这永远不会发生。