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

Java Switch Case匹配大小写不敏感输入后输出标准case名称的问题

没问题,我来帮你搞定这个需求!核心就是要把匹配到的标准小写名称单独存下来,最后输出这个存好的值就行,给你两种实用的方案:

方案1:在Case分支中直接记录标准名称

这种方法最直接,适合case数量不多的场景。我们新增一个变量来存储匹配到的标准小写名,每个case分支里给这个变量赋值对应的标准名称,最后输出它代替原始输入的name:

String standardName = null;
// 对应你代码里的break loop;,假设这里有外部循环
loop: while (true) {
    String name = "JoHn"; // 示例输入
    int salary = 0;

    switch (name.toLowerCase()) { 
        case "john": 
            salary = 12; 
            standardName = "john"; // 记录标准名称
            break loop; 
        case "jack": 
            standardName = "jack";
        case "jonathen": 
            salary = 6; 
            if (standardName == null) standardName = "jonathen"; // 给jonathen单独赋值
            break loop; 
        default: 
            System.out.println("\n\tWrong Name Dude!"); 
            break; 
    }
}

if (standardName != null) {
    System.out.print(standardName); // 输出标准小写名,示例中会打印"john"
}

说明:

  • 新增standardName变量专门存储匹配到的标准名称,每个有效case分支都给它赋值对应的小写字符串
  • 如果像jack和jonathen这种共享逻辑的case,可以分别赋值,确保输出对应的标准名
  • 最后判断standardName不为空时输出,避免错误场景下输出无效内容

方案2:用Map映射实现更易维护的写法

如果后续需要添加更多名称,用Map来维护“输入小写值→标准名称”的映射会更简洁,避免在多个case里重复赋值:

// 先定义映射关系:key是小写匹配值,value是对应的标准名称
Map<String, String> nameToStandardMap = new HashMap<>();
nameToStandardMap.put("john", "john");
nameToStandardMap.put("jack", "jack");
nameToStandardMap.put("jonathen", "jonathen");

// 对应你代码里的break loop;,假设这里有外部循环
loop: while (true) {
    String name = "JACK"; // 示例输入
    int salary = 0;
    String lowerName = name.toLowerCase();

    if (nameToStandardMap.containsKey(lowerName)) {
        String standardName = nameToStandardMap.get(lowerName);
        // 处理薪资逻辑
        switch (lowerName) {
            case "john": 
                salary = 12; 
                break loop;
            case "jack": 
            case "jonathen": 
                salary = 6; 
                break loop;
        }
        System.out.print(standardName); // 输出标准名,示例中会打印"jack"
    } else {
        System.out.println("\n\tWrong Name Dude!");
    }
}

说明:

  • 把所有需要匹配的名称和对应的标准名存在Map里,后续新增或修改时只需要调整Map即可,不用改动switch逻辑
  • 先判断输入的小写形式是否在Map中,存在就取出标准名称,再处理薪资逻辑,最后输出标准名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:23