2013-07-26 169 views
1
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class CountingSundays { 

    public static void main(String args[]) { 

     Calendar cal = new GregorianCalendar(1901, 00, 01); // month set to 0for jan , 1= feb etc 

     while((cal.get(Calendar.YEAR) != 2001) && (cal.get(Calendar.MONTH) != 0) && cal.get(Calendar.DAY_OF_MONTH) != 1) { // while not 1/1/2001 

       System.out.print(cal.get(Calendar.MONTH)); 
      // cal.add(Calendar.DAY_OF_MONTH, 1); 
     } 
    } 
} 

我試圖通過while循環遍歷每天添加一次,但它不會在第一次訪問while循環時進行迭代。 while循環中的條件是否正確?當我測試它時,它只適用於一種情況,但在添加第二種情況時停止。while循環中的多個條件

回答

5

應該

while(!(cal.get(Calendar.YEAR) == 2001 && cal.get(Calendar.MONTH) == 0 && cal.get(Calendar.DAY_OF_MONTH) == 1)) { // while not 1/1/2001 
+0

萬分感謝。這樣一個簡單的錯誤。 –

+0

爲什麼我會投我的問題呢?這是一個真正的問題和真正的錯誤? –

+0

我想大多數人會認爲這個錯誤太簡單了,不能在StackOverflow上。這裏真的很容易看到有什麼問題。 –

4

這僅僅是一個簡單的邏輯錯誤。如果即使其中一個是錯誤的(比方說,如果月份是0),那麼你就有真& &假& &是真的,這是錯誤的。

您需要整個表達式之外的「不」,或者您需要使用「||」把它們混合起來:

while(!(year == 2001 && month == 0 && day == 1)) 

while((year != 2011) || (month != 0) || (day != 1)) 
+0

+1,因爲你實際上在開場白中解釋了邏輯錯誤。 –

+0

對於那些有興趣的人來說,這兩個陳述之間的關係是德摩根定律的應用:http://en.wikipedia.org/wiki/De_Morgan's_laws –