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

如何在Java的switch-case语句中返回数组?

修正你的休息日名称返回方法

嘿,我看了你写的代码,里面有几个关键问题需要调整,才能实现你想要的功能。咱们一步步来改:

原代码的主要问题

  • 方法没有接收输入参数:需求里明确要求方法要接收一个字符串格式参数,但你的getWeekends()是空参数的
  • 返回类型错误:方法定义成了void,但实际需要返回String[]类型的数组
  • Switch表达式错误:你用了一个day数组作为switch的判断对象,这完全不符合逻辑,应该用传入的格式参数
  • 数组返回语法错误:直接return {"xxx", "xxx"};是不合法的,返回数组时需要显式创建新数组
  • 无用的day数组:你定义的这个数组完全没用到,属于冗余代码

修正后的完整代码

class App {
    public static void main(String[] args) {
        // 测试不同格式的调用
        String[] longWeekends = getWeekends("long");
        String[] shortWeekends = getWeekends("short");
        String[] defaultWeekends = getWeekends(null); // 使用默认的long格式

        // 打印测试结果
        System.out.println("Long format: " + String.join(", ", longWeekends));
        System.out.println("Short format: " + String.join(", ", shortWeekends));
        System.out.println("Default format: " + String.join(", ", defaultWeekends));
    }

    public static String[] getWeekends(String format) {
        // 处理默认值:如果参数为null或空,使用"long"作为默认格式
        String useFormat = (format == null || format.trim().isEmpty()) ? "long" : format;
        
        switch (useFormat) {
            case "short":
                return new String[]{"sat", "sun"};
            case "long":
            default: // 默认情况返回long格式
                return new String[]{"saturday", "sunday"};
        }
    }
}

代码说明

  1. 方法签名修正:把返回类型改为String[],添加了String format参数,符合需求要求
  2. 默认值处理:通过三元运算符判断,如果传入的参数是null或者空字符串,自动使用"long"作为默认格式
  3. Switch逻辑修正:用传入的格式参数作为switch的判断条件,每个case返回对应格式的字符串数组
  4. 合法的数组返回:使用new String[]{...}的语法创建并返回数组,符合Java语法规范
  5. 默认case处理:按照需求,默认返回"long"格式的休息日名称,而不是null

这样修改后,方法就完全符合你的需求了:传入"long"返回全拼的休息日,传入"short"返回缩写,不传或传null则默认返回全拼。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:54:08