簡體   English   中英

同時循環測試條件

[英]While loop testing condition

我正在嘗試執行while循環,直到用戶輸入Yes或No.

為什么測試函數中沒有OR而不是AND?

使用OR時,它可以是yesno

System.out.print("Enter yes or no: ");
String answer = input.getNext();
while (!answer.equals("yes") && !answer.equals("no")) {
    System.out.println("Enter ONLY yes or no, please: ");
    answer = input.getNext();
}
System.out.println("Thank you!");

因為!answer.equals("yes") && !answer.equals("no")基本上說雖然answer不是“是”而answer不是“不”。

為了使它成為OR你可以這樣做:

while(!(answer.equals("yes") || answer.equals("no")))
{
}

這意味着,雖然以下條件不屬實; 條件: answer是“是”或answer是“否”

while (!answer.equals("yes") && !answer.equals("no"))表示當條件變為false時循環終止。 根據de Morgan定律, !(!answer.equals("yes") && !answer.equals("no"))answer.equals("yes") || answer.equals("no") answer.equals("yes") || answer.equals("no") 也就是說,當答案要么是 “是”或“否”的循環終止-這正是你想要的。

如果您將&&更改為|| ,當答案同時為 “是”和“否”時,循環將終止,這是不可能的。

如果使用短路或/和(||和&&),系統不會評估整個表達式(如果不需要)。 因此,如果用戶輸入“no”,則檢查它是否為“yes”的第一部分的計算結果為true。 由於一個或條件只需要一個true來評估為true,因此它不會評估任何其他內容而只返回。

你需要&&,因為你說的是​​答案是肯定的,而不是不再要求輸入。 以下是短路布爾運算符: https//users.drew.edu/bburd/JavaForDummies4/ShortCircuitEval.pdf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM