2011-04-30 43 views
0

我有一條do while語句,並且我希望它在滿足兩個條件時循環。出於某種原因,只要allUp爲真,循環結束。做while語句 - 兩個參數

public void loop(){ 
    System.out.println(toString()); 
    do{ 
     turn(); 
     System.out.println(toString()); 
    while(allUp == false && end==false); 

    } 

} 
+0

您的代碼:

do{ turn(); System.out.println(toString()); while(allUp == false && end==false); } 

執行此操作。當你將它複製到堆棧溢出時,你的剪輯過多了嗎? – 2011-04-30 03:42:54

+0

除了您的代碼被別人描述爲錯誤之外,這是預期的行爲。 &&操作符在雙方表達式爲真時生成真。當allUp == true時,情況就不再這樣了。 (或者我在這裏丟失smthg?) – 2011-04-30 03:47:19

回答

6

這樣的:

while(allUp == false && end==false); 

} 

應該

} while(allUp == false && end==false); 
+0

@Greg - 假設問題不是拼寫錯誤。我不認爲在Java中有一個* do *塊,如果該塊沒有跟隨while語句,它就不會編譯。我認爲你的原始答案是現貨。 – tvanfosson 2011-04-30 03:45:05

0

這看起來不正確。這段時間應該超出大括號。

public void loop(){ 
System.out.println(toString()); 
do{ 
    turn(); 
    System.out.println(toString()); 

} while(allUp == false && end==false); 


} 
0

正如其他答案中所述,while語句應該在大括號之外。如果您剛開始使用Java編程,您可能需要閱讀關於此主題的Java Tutorials - While Loops

+0

乾杯,我會看看 – ART 2011-04-30 04:01:24

2

allUp爲真,allUp == falsefalse並且您退出循環(兩個條件之一爲false ...)。它應該是

while(allUp == false || end==false); 

或者,正如tvanfosson建議:

while (!(allUp && end)) 
+0

+1這是現貨。我認爲do {}中的內容只是格式不正確的代碼。 – Kal 2011-04-30 03:49:04

+1

我實際上更喜歡它是'while(!allUp ||!end)' - 甚至是'(!(allUp && end))',因爲IMO是連續性的最清晰的表達,而兩個條件都不符合。你不喜歡德摩根定律嗎? – tvanfosson 2011-04-30 03:49:09

+0

@tvanfosson - 謝謝。德摩根是我想過的確切的東西:) – MByD 2011-04-30 03:52:20

0

將您做子句的大括號這樣的外部while語句:

do { 
    ... 
} while(...); 

在這裏,你正在檢查while語句內部的條件,以便當條件成立時,它再次循環;當錯誤時,它退出循環。

相反的:張貼甚至不編譯

do{ 
    turn(); 
    System.out.println(toString()); 
} while(allUp == false && end==false);