用户输入并使用否定执行while循环

时间:2017-06-09 07:29:35

标签: java

我试图在do while循环中创建用户输入。如果用户输入不是,则循环应该继续。     我写的时候:

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    String userInput = "";
    String yes = "yes";
    String no = "no";

    do {
        System.out.print("Type yes or no: ");
        userInput = input.readLine();
    } while (userInput.equals(yes) || userInput.equals(no));

如果用户输入"是"或者"不"循环将继续,所有其他输入将导致循环结束。

当我写:

while (!userInput.equals(yes) || !userInput.equals(no));

无论用户输入什么,循环都会继续。

只有当我使用AND运算符时才有效。

while (!userInput.equals(yes) && !userInput.equals(no));

为什么会这样? 如果它不是OR运算符,因为我想说,如果用户输入yes或者没有停止循环。

4 个答案:

答案 0 :(得分:1)

!userInput.equals(yes) || !userInput.equals(no)

让我们说用户输入"你好"。你有

!false || !false

true || true

true

让我们说用户输入"是"。

你有

!true || !false

false || true

true

让我们说用户输入" no"。

你有

!false || !true

true || false

true

所以你看到,无论用户输入,条件总是如此,因此循环将永远持续。

答案 1 :(得分:1)

考虑一下你正在编写的布尔表达式。当用户输入“是”时,评估为!true || !false,等同于false||true true。由于满足条件,循环继续。

答案 2 :(得分:0)

因为这是布尔表达式的工作原理。与A ||相反B不是!A || !B但是!(A || B)与!A&& !乙

答案 3 :(得分:0)

> Functions >FUNC (void, IOHWAB_APPL_CODE) >void Timer (void) >void TimerOn (void) >void ADC_On (void) 表示A为true或B为true。如果说A为真,则它不会检查B它将直接进入块内。因此,当您说if( A || B)并且如果您输入yes时,则第二个条件变为true,当您输入no时,第一个条件变为true并继续执行。如果您再次输入if(!yes || !no),那么