2015-10-20 129 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; 

这就是我最终做的,一切都很完美!非常感谢!!