public class MonthDayCal {
public static boolean isLeapYear(int year){
if(year<1 || year>9999)
return false;
else {
switch(year%4){
case 0:
if((year%100)==0){
if((year%400)==0){
return true;
}
else
return false;
}
else
return true;
break; //<--java : unreachable statement
default:
return false;
}
}
}
public static void main(String [] args)
{
System.out.println(isLeapYear(2100));
}
}
在程序中使用break语句来计算跳跃的问题年使用switch语句。为什么我不能在这里使用break?如果我删除此休息时间,该程序运行正确。当年份可以被4整除并停止切换块时,我不应该使用break来摆脱情况。
break
语句永远不会到达,因为case 0
的所有执行路径始终以return语句结尾。
因此不需要。
如果为变量分配值而不是return语句,则需要break
语句:
boolean result = false;
if(year<1 || year>9999)
result = false;
else {
switch(year%4){
case 0:
if((year%100)==0){
if((year%400)==0){
result = true;
}
else
result = false;
}
else
result = true;
break;
default:
result = false;
}
}
return result;
当然,在这种情况下,您将能够简化代码,因此您根本不需要break语句:
boolean result = false;
if(year>=1 && year<=9999) {
switch(year%4){
case 0:
if((year%100)==0){
if((year%400)==0){
result = true;
}
} else {
result = true;
}
}
}
return result;
就是说,这看起来不太适合使用switch
语句,因为您只有两种情况(甚至一种情况)。