我会尽力清楚地说出我的问题,如果我在我的问题中没有意义,我道歉,我仍然是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,具体取决于月份?
答案 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;
这就是我最终做的事情,一切都很完美!非常感谢!!