bool isValidDate(int month, int day, int year) {
if(isLeapYear(year)){
if(year >= 1752 && month >= 9 && day >= 13){
if((month == 9 || month == 4 || month == 6 || month == 11) && (day <= 30)){
return true;
}
else if((month == 2) && (day <= 29)){
return true;
}
else if(((month >= 1 && month <= 3) || (month >=5 && month <= 8) || month == 10 || month == 12) && (day <= 31)){
return true;
}
else{
return false;
}
}
}
else {
if(year >= 1752 && month >= 9 && day >= 13){
if((month == 9 || month == 4 || month == 6 || month == 11) && (day <= 30)){
return true;
}
else if((month == 2) && (day <= 28)){
return true;
}
else if(((month >= 1 && month <= 3) || (month >=5 && month <= 8) || month == 10 || month == 12) && (day <= 31)){
return true;
}
else{
return false;
}
}
}
}
我不知道为什么会出现这样的错误。只能有两条可能的路线,这意味着肯定会有一个返回值。我很困惑。请帮忙!
答案 0 :(得分:1)
有一条可能没有回复的路线。如果if(year >= 1752 && month >= 9 && day >= 13)
没有评估为真,那就是
else{
if(year >= 1752 && month >= 9 && day >= 13){
if((month == 9 || month == 4 || month == 6 || month == 11) && (day <= 30)){
return true;
}
else if((month == 2) && (day <= 28)){
return true;
}
else if(((month >= 1 && month <= 3) || (month >=5 && month <= 8) || month == 10 || month == 12) && (day <= 31)){
return true;
}
else{
return false;
}
}
// return here
}
答案 1 :(得分:1)
没有&#34;否则&#34;为此:如果:
if(year >= 1752 && month >= 9 && day >= 13){
答案 2 :(得分:1)
如果return
为(year >= 1752 && month >= 9 && day >= 13)
,则可以在功能结尾处找到false
。
请注意,上述if
可能无法正常工作。您可能希望在1752年9月13日之后将其视为有效日期。但它将9月之前的任何日期视为无效。您可能需要在函数开头:
if (year < 1752)
return false;
else if (year == 1752) {
if (month < 9 || (month == 9 && day < 13))
return false;
}
顺便说一句,您不必为跳跃和非闰年复制所有块。只有在isLeapYear()
month == 2