使用Java Switch语句对非指定字母统一输出其他的实现方法
Java Switch实现非指定编码统一匹配方案
核心实现:使用default分支(全Java版本兼容)
switch语法原生提供default分支,专门用于处理所有显式case都没有命中的场景,完全不需要逐个编写所有可能的输入分支,刚好适配你的需求。你只需要把代码中写死的case "?"替换为default即可,注意补全break避免语句穿透。
修改后的完整代码如下:
import java.util.Scanner; public class SwitchPractice { public static void main(String args[]) { Scanner input = new Scanner(System.in); String employeeCode; System.out.print("Enter employees code: "); employeeCode = input.next(); switch (employeeCode) { case "T": System.out.print("Technician"); break; case "S": System.out.print("Sales"); break; case "M": System.out.print("Marketing"); break; // 所有未命中上面case的输入都会走到这个分支 default: System.out.print("OTHER!"); break; } } }
高版本Java简化写法
如果你使用Java 12及以上版本,可以用switch表达式省略break语句,写法更简洁:
String result = switch (employeeCode) { case "T" -> "Technician"; case "S" -> "Sales"; case "M" -> "Marketing"; default -> "OTHER!"; }; System.out.print(result);
自定义范围匹配的实现(比如你提到的A-Q区间场景)
如果你确实需要按字符区间分组匹配,不是所有非指定编码都归为其他,可以用以下两种方案:
- 单个字符场景:先将输入转为char类型,通过ASCII值判断区间,再走switch分支
- Java 17及以上版本:可以用带条件判断的模式匹配switch,示例如下:
// 先校验输入是单个大写字母的前提下 char code = employeeCode.charAt(0); String result = switch (code) { case 'T' -> "Technician"; case 'S' -> "Sales"; case 'M' -> "Marketing"; case c when c >= 'A' && c <= 'Q' -> "Other"; default -> "INVALID CODE"; }; System.out.print(result);
内容的提问来源于stack exchange,提问作者ripsly25
相关产品推荐
相关产品推荐

