Reputation: 59
i have a method which returns a boolean value . Ive added return statement in every case of my switch statements and added default which also returns a value but still im getting the "Missing return statement" . Whats missing ?
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;
}
}
Upvotes: 0
Views: 1120
Reputation:
private boolean isDateValid ()
{
boolean flag = false;
if ((_day>31) || (_day12) || (_month9999) || (_yearJANUARY)
flag = true;
break;
case 2:
if ((_year % 400 == 0) || ((_year % 4 == 0) && (_year % 100 != 0)))
{
if (_day>FEBRUARY_LEAP)
flag = true;
}
else if (_day>FEBRUARY)
flag = true;
break;
case 3:
if (_day>MARCH)
flag = true;
break;
case 4:
if (_day>APRIL)
flag = true;
break;
case 5:
if (_day>MAY)
flag = true;
break;
case 6:
if (_day>JUNE)
flag = true;
break;
case 7:
if (_day>JULY)
flag = true;
break;
case 8:
if (_day>AUGUST)
flag = true;
break;
case 9:
if (_day>SEPTEMBER)
flag = true;
break;
case 10:
if (_day>OCTOBER)
flag = true;
break;
case 11:
if (_day>NOVEMBER)
flag = true;
break;
case 12:
if (_day>DECEMBER)
flag = true;
break;
default: return flag;
}
return flag;
}
Upvotes: 0
Reputation: 926
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;
}
Upvotes: 0
Reputation: 353
because you are using if in your case statement( if that if expression doesn't match method will not have any return value )
case 3: if (_day>MARCH) return true; break;
Upvotes: 0
Reputation: 393781
Consider this case :
case 3:
if (_day>MARCH)
return true;
break;
You only return a value if the condition is true.
Instead, write
case 3:
return _day>MARCH;
This will return true if the condition is met and false otherwise.
The same applies to all you case clauses.
Upvotes: 4