2017-03-17 54 views
-5

我不確定這是否真的有效,所以我只是想問一下,如果這是正確的方式來顯示數字,如果我會得到輸出,哪一個不同的出生日期。我正努力工作,在此。檢查這是否真的有效?

這個程序有點笨拙。

int day = 0; 
    int month = 00; 
    int year = 1979; 

    while(day<33 && month<14 && year<2005 && year>1978) 
    { 
     if(day==32) 
     { 
      day = 0; 
     } 

     if(month==13) 
     { 
      month = 00; 
     } 

     if(year==2004) 
     { 
      year = 1979; 
     } 

     String dob = new String(day+""+month+""+year); 
     System.out.println(dob); 
     if(dob=="2611983") 
     { 
      System.out.println("My birthday"); 
      break; 
     } 

     day++; 
     month++; 
     year++; 
    } 
+0

不要用'=='比較字符串。而不是'dob ==「2611983」',做'dob.equals(「2611983」)' – 2017-03-17 14:35:40

+0

您是否收到一些異常或意外的輸出? – Lexi

+0

好的,謝謝@Hugo。祝你有美好的一天。 –

回答

1

當你運行它時會發生什麼?有些預測:它不會做你期望的,因爲你在同一個循環運行中增加日,月和年。 它也會永久循環,因爲你重置了你的循環內的日,月和年。 經過很多循環後,它可能會遇到一個滿足你生日的星座,但不會像想象的那樣。讓它運行並嘗試理解發生了什麼。

+0

所以我已經讓它運行了很長時間,但是即使打了之後,它也沒什麼用。謝謝,不過,我會努力的。謝謝你,SIr。 –

0

,因爲你是遞增的日,月和年在同一時間(即你不檢查所有的日子)這將無法正常工作,而不是嘗試這樣做:

int day = 1; 
int month = 1; 
int year = 1979; 
bool done=false; 
while(!done) 
{ 
if(year==2004) 
{ 
     year = 1979; 
} 
while (month<13 && !done) 
{ 
    while (day<32 && !done) 
    { 
     String dob = new String(day+""+month+""+year); 
     System.out.println(dob); 
     if(dob.equals("2611983")) 
     { 
     System.out.println("My birthday"); 
     done=true; 
     } 
     day++; 
    } 
    day=1; 
    month++;  
} 
    month=1; 
    year++; 
} 
+1

太棒了,這是一個完美的代碼。謝謝!但是我不太明白這背後的邏輯,那就是爲什麼你'day = 0'和'month ++',而在另一個循環中,'month = 0'和'year ++'。我很抱歉,如果這個問題不是一個非常重要的問題,但希望你能回答這個問題來解決我的問題。感謝您的代碼和時間。祝你有美好的一天。 –

+0

@ lafeo_007我沒有注意到它,謝謝你指出這一點,我糾正了它 –

+0

沒問題,實際上我輸入的代碼在當天和月份都有'0'。再次感謝你,祝你有美好的一天。 –