Java中的Switch Case多个条件

news/2025/2/3 12:37:39/文章来源:https://www.cnblogs.com/fji888/p/18697425

在Java编程中,switch语句是一种控制流语句,用于根据变量的值执行不同的代码块。与 if-else语句相比,switch语句在某些情况下更加简洁和高效。在需要处理多个条件时,switch语句也可以通过一定的方法进行优化。本文将详细介绍Java中 switch case的使用方法,包括如何处理多个条件。

基本语法

switch语句的基本语法如下:

switch (expression) {case value1:// 代码块break;case value2:// 代码块break;// 更多casedefault:// 默认代码块
}
​
 
 
  • expression:用于判断的表达式,通常是整型、字符串、枚举等。
  • case value:与表达式值匹配的分支。
  • break:用于终止 switch语句,防止继续执行后续的case。
  • default:所有case都不匹配时执行的代码块。

处理多个条件

在 switch语句中,如果不同的case分支需要执行相同的代码,可以将它们合并。这种方式能够有效减少代码冗余,提高可读性。

示例1:合并相同代码的多个case

char grade = 'B';switch (grade) {case 'A':case 'B':case 'C':System.out.println("通过");break;case 'D':case 'E':System.out.println("不通过");break;default:System.out.println("无效成绩");
}
​
 
 

在这个示例中,ABC三个case分支执行相同的代码,通过将它们合并在一起,可以简化代码。

示例2:通过字符串合并多个case

Java 7开始支持使用字符串作为 switch表达式。

String role = "admin";switch (role) {case "admin":case "administrator":System.out.println("访问管理功能");break;case "user":case "guest":System.out.println("访问用户功能");break;default:System.out.println("无效角色");
}
​
 
 

在这个示例中,admin和 administrator两个case分支执行相同的代码。

进阶用法

使用枚举类型

使用枚举类型可以使代码更加清晰、可读性更高,并且避免了字符串常量带来的拼写错误。

定义枚举类型

public enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
​
 
 

使用枚举类型的 switch语句

Day today = Day.MONDAY;switch (today) {case MONDAY:case TUESDAY:case WEDNESDAY:case THURSDAY:case FRIDAY:System.out.println("工作日");break;case SATURDAY:case SUNDAY:System.out.println("周末");break;
}
​
 
 

使用常量

如果有多个常量需要判断,也可以使用 switch语句进行优化。

定义常量

public class Constants {public static final int RED = 1;public static final int GREEN = 2;public static final int BLUE = 3;public static final int YELLOW = 4;
}
​
 
 

使用常量的 switch语句

int color = Constants.RED;switch (color) {case Constants.RED:case Constants.GREEN:System.out.println("暖色调");break;case Constants.BLUE:case Constants.YELLOW:System.out.println("冷色调");break;default:System.out.println("未知颜色");
}
​
 
 

嵌套 switch语句

在某些复杂场景下,可能需要嵌套 switch语句。

String userType = "admin";
String action = "delete";switch (userType) {case "admin":switch (action) {case "create":System.out.println("管理员创建内容");break;case "delete":System.out.println("管理员删除内容");break;default:System.out.println("无效操作");}break;case "user":switch (action) {case "create":System.out.println("用户创建内容");break;case "delete":System.out.println("用户无权删除内容");break;default:System.out.println("无效操作");}break;default:System.out.println("未知用户类型");
}
​
 
 

通过函数优化

在某些情况下,通过将重复代码提取到函数中,可以进一步优化 switch语句。

public class SwitchCaseExample {public static void main(String[] args) {char grade = 'B';printGradeMessage(grade);}public static void printGradeMessage(char grade) {switch (grade) {case 'A':case 'B':case 'C':printPassMessage();break;case 'D':case 'E':printFailMessage();break;default:printInvalidMessage();}}private static void printPassMessage() {System.out.println("通过");}private static void printFailMessage() {System.out.println("不通过");}private static void printInvalidMessage() {System.out.println("无效成绩");}
}
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/878251.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1. 2025年:致每一位在软件测试道路上奋斗的伙伴

亲爱的读者朋友们: 新年好!时光荏苒,转眼间我们已经迈入2025年。在这辞旧迎新的时刻,我怀着无比感恩的心情,向一路相伴的每一位软件测试从业者、爱好者以及关注者们致以最诚挚的祝福!愿大家在新的一年里,健康平安,事业有成,代码无Bug,需求皆清晰! 过去的一年,是软件测试行业蓬勃…

执行npm run dev时,报错10% building 2/5 modules 3 active node,如何解决?

错误信息如下:原因:版本问题,为了不替换node版本使用如下方法 在package.json文件下 将 "dev": " vue-cli-service serve", "build:prod": "vue-cli-service build", "build:stage": "vue-cli-service build --mode…

Make your ternimal more useful

目录引入Iterm2配置和Zshell配置TmuxVim配置基本使用插件配置Coc默认配置快捷键说明NerdTree快捷键分屏:Buffer, Windows和Tab 引入 本着好程序员要用好终端的信念,加之在使用mac过程中对快捷键依赖度增加,对鼠标的依赖逐渐减少,所以打算尝试配置终端的代码编写环境。 不曾…

龙哥量化:通达信技术指标编写技巧分享篇1-成交量和换手率

龙哥微信:Long622889代写通达信技术指标、选股公式(通达信,同花顺,东方财富,大智慧,文华,博易,飞狐)代写期货量化策略(TB交易开拓者,文华8,金字塔) 春节假期, 和朋友闲聊,发现在选股思路上很杂乱, 完全没有体系,但是大致可以分为两种,趋势策略和震荡策略,其…

昆明理工大学材料科学与工程学院 2025年硕士研究生招生预测调剂名额 (供考生提前规划)

亲爱的考生: 为助力各位考生提前规划考研调剂方向,昆明理工大学材料科学与工程学院结合近年招生趋势及学科发展需求,预测2025年材料工程相关专业将有部分调剂名额,具体信息如下。欢迎符合条件的考生持续关注! 一、预测调剂专业及名额注: 最终调剂名额以2025年研招网官方发…

hive-pig--pig安装

1.下载 curl https://dlcdn.apache.org/pig/pig-0.17.0/pig-0.17.0.tar.gz -o /opt/software/pig-0.17.0.tar.gz2.解压 tar -zxvf /opt/software/pig-0.17.0.tar.gz -C /usr/local/src/ mv /usr/local/src/pig-0.17.0/ /usr/local/src/pig 3.把二进制路径添加到命令行路径 echo…

PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络

神经常微分方程(Neural ODEs)是深度学习领域的创新性模型架构,它将神经网络的离散变换扩展为连续时间动力系统。与传统神经网络将层表示为离散变换不同,Neural ODEs将变换过程视为深度(或时间)的连续函数。这种方法为机器学习开创了新的研究方向,尤其在生成模型、时间序…

[ArkUI] 记录一次 ArkUI 学习心得 (1) -- 基础概念

1.一个原生鸿蒙应用的源码目录其中:ets是项目的源码目录.ets/pages是页面目录, 用于渲染页面.resources是资源目录,下面会讲. 2.第一个原生鸿蒙应用 话不多说,直接上代码. @Entry @Component struct Index {@State message: string = My First Program!;@State num: number = 0…

互联网已经没法用了

图片:作者制作我们已经到了这样的地步——曾经能让我们随时随地获取全世界信息的互联网,现在已经完全没法用了。 罪魁祸首是广告,情况糟糕到一种极端的程度,以至于它被称为“广告末日”(adpocalypse)。 现在我打开的几乎每个网站都塞满了广告,整个页面都快撑爆了。在电脑…

uniCloud(dcloud.net.cn)https证书配制

前端网页托管-->参数配置-->域名信息-->更新证书 阿里云 https--SSL证书获取

Cisco Catalyst 9800-CL Wireless Controller for Cloud, IOS XE Release 17.16.1 ED - 思科虚拟无线控制器系统软件

Cisco Catalyst 9800-CL Wireless Controller for Cloud, IOS XE Release 17.16.1 ED - 思科虚拟无线控制器系统软件Cisco Catalyst 9800-CL Wireless Controller for Cloud, IOS XE Release 17.16.1 ED 面向云的思科 Catalyst 9800-CL 无线控制器,专为基于意图的网络全新打造…

Cisco Catalyst 9800 Wireless Controller, IOS XE Release 17.16.1 ED - 思科无线控制器系统软件

Cisco Catalyst 9800 Wireless Controller, IOS XE Release 17.16.1 ED - 思科无线控制器系统软件Cisco Catalyst 9800 Wireless Controller, IOS XE Release 17.16.1 ED 思科 Catalyst 9800 系列无线控制器 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-cat…