在 Java 里,给 switch 加“条件”通常分几种情况,我按常见需求给你讲清楚,并附上示例。
switch 只能做等值判断,不能直接写 >、< 这类条件。
int score = 85;
switch (score / 10) {
case 10:
case 9:
System.out.println("优秀");
break;
case 8:
System.out.println("良好");
break;
case 7:
case 6:
System.out.println("及格");
break;
default:
System.out.println("不及格");
}
✅ 技巧:通过运算(如 score / 10)间接实现“范围条件”。
case ->(推荐)int score = 85;
String level = switch (score / 10) {
case 10, 9 -> "优秀";
case 8 -> "良好";
case 7, 6 -> "及格";
default -> "不及格";
};
System.out.println(level);
✅ 优点:
break如果条件复杂,switch 做不到的,就交给 if。
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
✅ 适合:范围判断、多条件组合
| 支持情况 | 示例 |
|---|---|
| ✅ 等值判断 | case 1: |
| ✅ 枚举 | case MONDAY: |
| ✅ 字符串 | case "A": |
| ❌ 范围判断 | case > 10: ❌ |
| ❌ 逻辑表达式 | case x > y: ❌ |
enum Status {
SUCCESS, ERROR, LOADING
}
Status status = Status.SUCCESS;
switch (status) {
case SUCCESS -> System.out.println("成功");
case ERROR -> System.out.println("失败");
case LOADING -> System.out.println("加载中");
}
✅ 适合:
❌ 不适合:
>、<如果你有具体场景(比如:状态机、权限判断、成绩、订单状态),可以把代码贴出来,我可以直接帮你改写 ✅
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。