You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Switch Case实现月份对应季节的Java程序问题求助

符合要求的Java月份转季节实现

根据题目要求,我们可以利用Java switch语句的case穿透特性,仅用两个case块处理冬季和夏季,用default分支处理雨季,同时输出对应月份名称。以下是完整实现:

public class MonthToSeason {
    public static void main(String[] args) {
        int month = 7; // 可替换为输入的月份数字

        switch (month) {
            // 冬季:11、12、2月,利用case穿透共用逻辑
            case 11:
            case 12:
            case 2:
                printMonthName(month);
                System.out.println("冬季");
                break;
            // 夏季:3-7月,同理用case穿透简化代码
            case 3:
            case 4:
            case 5:
            case 6:
            case 7:
                printMonthName(month);
                System.out.println("夏季");
                break;
            // 雨季:8-10月,用default处理剩余月份
            default:
                printMonthName(month);
                System.out.println("雨季");
                break;
        }
    }

    // 辅助方法:根据月份数字输出对应英文名称
    private static void printMonthName(int month) {
        switch (month) {
            case 1: System.out.println("January"); break;
            case 2: System.out.println("February"); break;
            case 3: System.out.println("March"); break;
            case 4: System.out.println("April"); break;
            case 5: System.out.println("May"); break;
            case 6: System.out.println("June"); break;
            case 7: System.out.println("July"); break;
            case 8: System.out.println("August"); break;
            case 9: System.out.println("September"); break;
            case 10: System.out.println("October"); break;
            case 11: System.out.println("November"); break;
            case 12: System.out.println("December"); break;
        }
    }
}

代码逻辑说明

  1. case穿透简化代码:多个属于同一季节的月份可以共用同一逻辑块,不需要重复编写输出代码,完美符合题目“仅用两个case处理冬季和夏季”的要求。
  2. default分支处理雨季:除冬季、夏季外的8-10月会自动进入default分支,满足题目用default处理雨季的规则。
  3. 辅助方法解耦:把输出月份名称的逻辑抽成单独方法,避免主switch代码冗余,提升可读性。

你的方案问题分析

方案1:逻辑正确但不符合简化要求

第一个方案每个月份都单独写case块,虽然逻辑没问题,但没有利用switch的case穿透特性,导致代码冗余,完全不符合题目“仅用两个case处理冬季和夏季”的简化要求。

方案2:核心逻辑错误

第二个方案存在多个致命问题:

  • switch表达式使用字符串变量summer,但case分支写的是数字,类型不匹配,编译直接报错。
  • 错误地拆分出三个独立switch,没有围绕month变量做判断,逻辑完全偏离需求。
  • default分支没有实现任何输出逻辑,无法完成雨季的输出要求。

内容的提问来源于stack exchange,提问作者data2quest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:10:29