我有一个返回布尔值的方法。我已经在我的switch语句的每个情况下添加了return语句,并添加了default,它也返回一个值,但仍然得到了“Missing return statement”。 什么不见了?
private boolean isDateValid ()
{
if ((_day>31) || (_day<=0))
{
return true;
}
if ((_month>12) || (_month<=0))
{
return true;
}
if ((_year>9999) || (_year<1000))
{
return true;
}
switch (_month)
{
case 1:
if (_day>JANUARY)
return true;
break;
case 2:
if ((_year % 400 == 0) || ((_year % 4 == 0) && (_year % 100 != 0)))
{
if (_day>FEBRUARY_LEAP)
return true;
}
else if (_day>FEBRUARY)
return true;
break;
case 3:
if (_day>MARCH)
return true;
break;
case 4:
if (_day>APRIL)
return true;
break;
case 5:
if (_day>MAY)
return true;
break;
case 6:
if (_day>JUNE)
return true;
break;
case 7:
if (_day>JULY)
return true;
break;
case 8:
if (_day>AUGUST)
return true;
break;
case 9:
if (_day>SEPTEMBER)
return true;
break;
case 10:
if (_day>OCTOBER)
return true;
break;
case 11:
if (_day>NOVEMBER)
return true;
break;
case 12:
if (_day>DECEMBER)
return true;
break;
default: return false;
}
}
答案 0 :(得分:4)
考虑这种情况:
case 3:
if (_day>MARCH)
return true;
break;
如果条件为真,则只返回一个值。
相反,写一下
case 3:
return _day>MARCH;
如果满足条件,则返回true,否则返回false。
这同样适用于所有案例条款。
答案 1 :(得分:0)
因为你在案例陈述中使用 if (如果表达式不匹配,那么方法将没有任何返回值)
案例3: if(_day&gt; MARCH) 返回true; 打破;
答案 2 :(得分:0)
Add `return false;` above the last bracket `}` and replace each `break;` statement
private boolean isDateValid ()
{
if ((_day>31) || (_day<=0))
{
return true;
}
if ((_month>12) || (_month<=0))
{
return true;
}
if ((_year>9999) || (_year<1000))
{
return true;
}
switch (_month)
{
case 1:
if (_day>JANUARY)
return true;
return false;
case 2:
if ((_year % 400 == 0) || ((_year % 4 == 0) && (_year % 100 != 0)))
{
if (_day>FEBRUARY_LEAP)
return true;
}
else if (_day>FEBRUARY)
return true;
return false;
case 3:
if (_day>MARCH)
return true;
return false;
case 4:
if (_day>APRIL)
return true;
return false;
case 5:
if (_day>MAY)
return true;
return false;
case 6:
if (_day>JUNE)
return true;
return false;
case 7:
if (_day>JULY)
return true;
return false;
case 8:
if (_day>AUGUST)
return true;
return false;
case 9:
if (_day>SEPTEMBER)
return true;
return false;
case 10:
if (_day>OCTOBER)
return true;
return false;
case 11:
if (_day>NOVEMBER)
return true;
return false;
case 12:
if (_day>DECEMBER)
return true;
return false;
default: return false;
}
return false;
}
答案 3 :(得分:0)
df = pandas.DataFrame({
"Grade": [1, 2, 1, 1, 2, 1, 2, 2, 1],
"Major": ["Science", "Art", "Engineering", "Science", "Science", "Science", "Science", "Engineering", "Engineering"]})