Java 在我的程序中使用break语句使用switch语句计算闰年时出现问题 公共类MonthDayCal{ 公共静态布尔值isLeapYear(整数年){ 如果(年份9999) 返回false; 否则{ 交换机(第%4年){ 案例0: 如果((年份%100)==0){ 如果((年份%400)==0){ 返回true; }否则 返回false; }否则 返回true; break;//

Java 在我的程序中使用break语句使用switch语句计算闰年时出现问题 公共类MonthDayCal{ 公共静态布尔值isLeapYear(整数年){ 如果(年份9999) 返回false; 否则{ 交换机(第%4年){ 案例0: 如果((年份%100)==0){ 如果((年份%400)==0){ 返回true; }否则 返回false; }否则 返回true; break;//,java,switch-statement,break,Java,Switch Statement,Break,永远不会到达break语句,因为案例0的所有执行路径始终以return语句结束 因此不需要它 如果为变量赋值而不是返回语句,则需要break语句: public class MonthDayCal { public static boolean isLeapYear(int year) { if (year < 1 || year > 9999) return false; else { swi

永远不会到达
break
语句,因为
案例0
的所有执行路径始终以return语句结束

因此不需要它

如果为变量赋值而不是返回语句,则需要
break
语句:

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));
    }
}
或者更简单(尽管还可以进一步简化):

boolean结果=false;

如果(year>=1&&year在此
break;
之前,您在每种情况下都返回。这意味着它是不可访问的…
case
s只能有一个
return
break
,因为它们都会导致退出作用域。我知道您做了什么,感谢您的快速响应。那么这是否意味着如果我在每种情况下都返回一个值,我会永远不要使用break语句,因为它变得不可访问?@R\u Pal这是正确的。编译器会帮助您做到这一点,但如果您将任何语句放在无法访问的地方,则不允许代码通过编译。
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;
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;
boolean result = false;
if(year>=1 && year<=9999 && year%4 == 0) {
    if((year%100)==0){
        if((year%400)==0){
            result = true;
        }
    } else {
        result = true;
    }
}
return result;
boolean result = false;
if(year>=1 && year<=9999 && year%4 == 0) {
    if((year%100) != 0 || (year%400)==0) {
        result = true;
    }
}
return result;