我试图在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或者没有停止循环。
答案 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)
,那么