如何在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"}; } } }
代码说明
- 方法签名修正:把返回类型改为
String[],添加了String format参数,符合需求要求 - 默认值处理:通过三元运算符判断,如果传入的参数是null或者空字符串,自动使用"long"作为默认格式
- Switch逻辑修正:用传入的格式参数作为switch的判断条件,每个case返回对应格式的字符串数组
- 合法的数组返回:使用
new String[]{...}的语法创建并返回数组,符合Java语法规范 - 默认case处理:按照需求,默认返回"long"格式的休息日名称,而不是null
这样修改后,方法就完全符合你的需求了:传入"long"返回全拼的休息日,传入"short"返回缩写,不传或传null则默认返回全拼。
内容的提问来源于stack exchange,提问作者Pete Alexandrovich
相关产品推荐
相关产品推荐

