2015-10-20 121 views
0

我將盡我所能清楚地說出我的問題,如果我對我的問題沒有意義,我很抱歉,我對java仍然很陌生(幾個星期到我的第一個Java類)。if,else if和else聲明? java

我的作業的一部分是: 「修改發票類中的構造函數,所以根據月份不同,這一天不會大於31,30或28,如果月份是無效的, 0,也迫使一天到0。「

所以在我原來的計劃我有這個作爲我的月份和日期的方法:

public void setMonth(int month) { 
if(month < 1 || month > 12) //if month is less than 1 and greater than 12 force number to 0 
    this.month = 0; 
else 
    this.month = month; 
} 

public void setDay(int day) { 
if(day < 1 || day > 31) //if day is less than 1 and greater than 31 force to 0 
    this.day = 0; 
else 
    this.day = day; 
} 

所以,我想在我的困惑是,是我應該使用「否則,如果」以確保天不大於31,30或28取決於月份? (?還有,我不知道,如果「否則,如果」中的Java支持C++是我最瞭解)

像:

else if(month = 2 && day > 28) 
this.day = 0; 

(我知道這個代碼不正確,它有一個錯誤當我打字時)。您認爲根據月份確定一天不會超過31,30或28的最佳方式是什麼?

+0

如果其他如果在Java中支持,就像C++一樣。但是,要小心'if(1)'不起作用 – Sweeper

+0

如果可以使用else,但效率不高。改用java日曆並使用它。 –

+0

1.其他if支持java。 2.在你分享的代碼中:else if(month = 2 && day> 28),month得到一個值,注意這個編程錯誤是我們通常面對的,因爲在這裏,你試圖做一個比較,不是任務。 –

回答

4
else if(month = 2 && day > 28) 
this.day = 0; 

(我知道這段代碼不正確,它在我輸入時發生錯誤)。您認爲根據月份確定一天不會超過31,30或28的最佳方式是什麼?

錯誤不在else if部分,但在month = 2部分。 實際上,您將月份分配爲2而不是進行比較。

使用month == 2和你的代碼將正常工作。

0

另外我不確定Java中是否支持'else if'?

它在Java中也得到了很大的支持。

if(day < 1 || day > 31) 
    this.day = 0; 
else 
    this.day = day; 
} 

如果條件day < 1 || day >31蓋的一切,沒有必要否則如果,但是您可能需要爲30 days month考慮按你的業務邏輯

else if(month = 2 && day > 28) 
this.day = 0; 

=是分配和==是用於比較,需要使用==

else if(month == 2 && day > 28) 
    this.day = 0; 
+0

@TJCrowder我沒有得到你 –

+0

你*似乎*已經得到了我,正如你已經修復它一樣。 :-) –

0

非常感謝大家!我覺得很愚蠢,因爲我沒有在該代碼中插入兩個等號。對不起,這樣一個簡單的錯誤!

else if (month == 2 && day > 28) 
    this.day = 0; 
else if (month == 4 || month == 6 || month == 9 || month == 11 && day > 30) 
    this.day = 0; 

這就是我最終做的,一切都很完美!非常感謝!!