if,else if和else语句? java的

时间:2015-10-20 05:27:27

标签: java if-statement constructor

我会尽力清楚地说出我的问题,如果我在我的问题中没有意义,我道歉,我仍然是java的新手(几周后我的第一个Java课程)。< / p>

我的部分任务是: &#34;修改Invoice类中的构造函数,因此日期不会超过31,30或28,具体取决于月份。此外,如果月份无效,因此强制为0,也强制将该日期设为0。&#34;

所以在我的原始程序中,我将此作为我的月和日方法:

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;
}

所以我猜我的困惑在哪里,我应该使用&#39;否则如果&#39;确保日期不超过31,30或28,具体取决于月份? (我也不确定是否&#39;否则Java是否支持?C ++是我最了解的内容)

像:

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

(我知道这段代码不正确,当我输入它时它有错误)。您认为最好的方法是确保当天不超过31,30或28,具体取决于月份?

3 个答案:

答案 0 :(得分:4)

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

(我知道这段代码不正确,我在输入时遇到错误)。您认为最好的方法是确保当天不超过31,30或28,具体取决于月份?

错误不在else if部分,而在month = 2部分。 您实际上是将2分配给月份而不是比较它。

使用month == 2,您的代码就可以正常使用。

答案 1 :(得分:0)

  

我也不确定是否&#39;否则如果&#39; Java支持吗?

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;

答案 2 :(得分: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;

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