我的程序中使用break语句来使用switch语句计算leap年的问题

问题描述 投票:0回答:1
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来摆脱情况。

java switch-statement break
1个回答
0
投票

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语句,因为您只有两种情况(甚至一种情况)。

© www.soinside.com 2019 - 2024. All rights reserved.