正确使用OR逻辑运算符

时间:2014-12-26 18:50:26

标签: java while-loop

所以我有这个循环。如果d1(用户输入)不是“g”或“u”,则应该运行循环。目的是强迫用户回答问题。但我不能让它发挥作用。

Scanner user_input = new Scanner(System.in);
d1 = user_input.next();
while (!"g".equals(d1) || !"u".equals(d1)) {
    System.out.println("");
    System.out.println("");
    System.out.print("");
    d1 = user_input.next();
}

我从过去知道这会起作用:

while (!"g".equals(d1)) {
    System.out.println("");
    System.out.println("");
    System.out.print("");
    d1 = user_input.next();
}

我认为它与这个“或逻辑运算符”||

有关

3 个答案:

答案 0 :(得分:3)

条件应该是:

while (!"g".equals(d1) && !"u".equals(d1)) {

而不是

while (!"g".equals(d1) || !"u".equals(d1)) {

答案 1 :(得分:1)

由于d1不能同时等于"g" "u",因此循环条件始终为真。你可能想要否定整个条件,而不是个别条件:

while (!("g".equals(d1) || "u".equals(d1)))

或类似地(也许更容易阅读):

while (!"g".equals(d1) && !"u".equals(d1))

答案 2 :(得分:0)

你说"如果用户输入不是g"或者"如果用户输入不是你,那么......并不是一个更好的运营商,你正在尝试做什么?如同在"如果用户输入既不是g也不是你":

使用&&而不是||如果是的话。