switch case语句用法详解

2023-05-16

switch “开关”的意思,是一种“选择”语句,它用法非常简单。switch 是多分支选择语句。说得通俗点,多分支就是多个 if语句的组合。从功能上说,switch 语句和 if 语句完全可以相互取代。但从编程的角度,它们又各有各的特点,所以至今为止也不能说谁可以完全取代谁。

当嵌套的 if 比较少时(三个以内),用 if 编写程序会比较简洁。但是当选择的分支比较多时,嵌套的 if 语句层数就会很多,导致程序冗长,可读性下降。因此用 switch 语句来处理多分支选择。所以 if 和 switch 可以说是分工明确的。在很多大型的项目中,多分支选择的情况经常会遇到,所以 switch 语句用得还是比较多的。

switch的一般形式如下:

		switch(表达式)
		{
		case 常量表达式1:语句1;
		case 常量表达式2:语句2;
		...
		case 常量表达式n:语句n;
		default:语句;
		}            

说明:

1) switch() 括号内的“表达式”必须是整数类型或者可以转换为整型的数值类型。比如:byte、short、int、char、也可以直接是整数或字符常量还有枚举,哪怕是负数都可以。需要强调的是:float、double、long和String类型是不能作用在switch语句上的。

2) switch 下的 case 和 default 必须用一对大括号{}括起来。

3) 当switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。
switch是“选择”语句,不是“循环”语句。因为break一般给我们的印象是跳出“循环”,但break还有一个用法,就是跳出switch。

4) 若所有的 case 中的常量表达式的值都没有与 switch 后面括号内“表达式”的值相等的,就执行 default 后面的语句,default 是“默认”的意思。如果 default 是最后一条语句的话,那么其后就可以不加 break,因为既然已经是最后一句了,则执行完后自然就退出 switch 了。

5) 每个 case 后面“常量表达式”的值必须互不相同,否则就会出现互相矛盾的现象,而且这样写造成语法错误。

6) “case常量表达式”只是起语句标号的作用,并不是在该处进行判断。在执行 switch 语句时,根据 switch 后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。

7) 各个 case 和 default 的出现次序不影响执行结果。但从阅读的角度最好是按字母或数字的顺序写。

8) 当然你也可以不写 default 语句,就跟 if…else 最后不要 else 语句一样。但最好是加上,后面可以什么都不写。这样可以避免别人误以为你忘了进行 default 处理,而且可以提醒别人 switch 到此结束了。
default 后面可以什么都不写,但是后面的冒号和分号千万不能省略,省略了就是语法错误。

例:

public class MultipleBranch {
	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入您想去的楼层:");
		int storey = scanner.nextInt();
		switch (storey) {
		case 1:
			System.out.println("1层开!\n");
			break;
		case 2:
			System.out.println("2层开!\n");
			break;
		case 3:
			System.out.println("3层开!\n");
			break;
		default:
			System.out.println("该层不存在! 请重新输入\n");
		}
	}
	
}            

转载请注明出处:BestEternity亲笔。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

switch case语句用法详解 的相关文章

  • 包含 count 和 case 语句的 SQL 查询

    我需要找出有多少人在 3 个不同年份 2006 年 2007 年 2008 年 的报税期结束日期 fpe 的 60 天内 120 天内 180 天内 180 天内提交了 fil dt 纳税申报表 下面的陈述将给我所有的岁月 我需要对每年和每
  • 创建可能案例的简单方法

    我有数据列表 例如 a 1 2 3 4 b a b c d e c 001 002 003 我想创建另一个新的列表 该列表由 a b c 的所有可能情况混合而成 如下所示 d 1a001 1a002 1a003 4e003 是否有任何模块或
  • 如何使用批处理搜索和替换区分大小写的字符串

    我想搜索并替换区分大小写的字符串 就像如果我在文本文件中有rise Rise RISE 我只想替换字符串 rise 下面的代码是替换所有三个字符串 请帮助我 Echo on SETLOCAL ENABLEEXTENSIONS SETLOCA
  • 如何反转 Java 中字符串的大小写?

    我想改变一个字符串 使所有大写字符变成小写 所有小写字符变成大写 数字字符将被忽略 所以 AbCdE123 变成 aBcDe123 我想一定有一种方法可以迭代字符串并翻转每个字符 或者也许有一些正则表达式可以做到这一点 Apache Com
  • 如何在 LINQ 中按大小写排序

    我有这个答案实体框架 OrderBy CASE WHEN 但这只能处理两个选项 var p ctx People OrderBy p gt p IsQualityNetwork 1 p IsEmployee 1 0 1 ThenBy p g
  • 单击时更改 MenuItem 可见性

    我正试图隐藏一个MenuItem并在选择第一个时使另一个可见 每个 ID 为 pencil R id button routines edit check mark R id button routines edit done 这里是相关代
  • 在 WHERE 子句中使用 CASE 表达式中的“结果表达式”

    是否可以通过使用结果表达式 weight class 来过滤 SQL Server 中的记录CASE表达于WHERE条款 我无法让它工作 因为我收到一条错误消息 列名 weight class 无效 Code SELECT first na
  • where子句中的用例[重复]

    这个问题在这里已经有答案了 我正在尝试将 case 语句添加到查询中的 where 条件 我的查询如下所示 select from table name where if id 1 then col1 0 else col1 is null
  • 优化SQL Server WHERE子句条件中的CASE WHEN语句

    我正在重写我的 sql 以减少执行成本 并想知道是否有一种有效的方法来编写 WHERE 条件中使用的以下 CASE WHEN 语句 SELECT l tg FROM RefTable tg InputTbl l WHERE tg areas
  • MYSQL LEFT JOIN 与 CASE 优化

    我花了一些时间尝试使用 CASE 来处理这个 SELECT 但我失败了 感谢我现在正在使用 COLASCE 如何使用 CASE IF 语句优化此 SELECT 这是从字段选择的不同表中查询的快速方法吗 SELECT a folderid a
  • 我的 CASE 语句查询有什么问题

    我正在尝试解决 13http www sqlzoo net wiki The JOIN operation http www sqlzoo net wiki The JOIN operation 列出每场比赛以及每支球队的进球数 如图所示
  • switch执行所有case语句

    有人能解释一下为什么我的循环从 0 到 7 吗 我只需要获取前 3 种情况 但程序正在经历所有情况 代码位于 show 方法中 for brojac 0 brojac lt 3 brojac switch brojac case 1 fig
  • 使用不同长度的传入号码(带或不带前缀)进行电话号码查找

    Systems 呼叫中心电话系统 来电附有源号码 又名来电显示 又名 ANI SQL Server 2005 数据仓库 在表 CustDataByANI 中存储客户电话号码 cANI 客户姓名 位置等 存储过程 呼叫中心软件将主叫方 ID
  • 如何使用 switch case (if) 之类的?

    我想在我的代码中使用像 if 那样的 switch 但我不知道如何使用 以防万一 这是我的代码 string a a System Convert ToString textBox1 Text if a Contains h a Conta
  • 为什么 Clojure 的多方法比“if”或“case”语句更好

    我花了一些时间试图理解 Clojure 多方法 据我了解 主要的 专业 多方法论点是它们的灵活性 但是 我对为什么多方法比简单的 if 或 case 语句更好的争论感到困惑 请有人解释一下 多态性和过度美化的案例陈述之间的界限在哪里 编辑
  • JavaScript 中变音符号的标题大小写(非 ASCII)

    是否可以创建一个 JavaScript 函数 可以将字符串转换为标题大小写 但可以处理非 ASCII Unicode 字符 例如 使用以下字符 etc 例如 如果字符串是 anders ngstr m 则应将其转换为 Anders ngst
  • 递减时“删除”时出现语法错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在 删除 案例中遇到语法错误 我一直在尝试修复它 但我无法弄清楚 谁能告诉我如何修复它 谢谢 该代码适用于在线商店购物车 swi
  • SQL 聚合函数别名

    我是 SQL 初学者 这是我被要求解决的问题 假设大城市被定义为place类型的city人口为 至少100 000 编写返回方案的 SQL 查询 state name no big city big city population 订购st
  • mysql 窗口函数与案例

    我正在尝试使用内置案例执行窗口功能 这是一个应该更清楚的例子 原表 SELECT trade date ticker trans type quantity FROM orders WHERE trade date gt 2020 11 1
  • 解析日期后从 Oracle Select 语句返回数字

    我想编写一个 Oracle SQL select 语句 告诉它是否可以通过返回代码来解析给定格式的日期字符串 失败时返回零 异常 成功时返回正数 SELECT CASE WHEN PARSING SUCCESSFUL ie to date

随机推荐

  • 18.app后端如何实现LBS

    移动互联网 xff0c 除了一直在线这个特点外 xff0c 还有一个重要特点 xff0c 能定位到手机的位置 查找附近的人 附近的餐馆等服务 xff0c 以及大量的o2o应用 都需要使用LBS Location Based Services
  • 19.最省钱的app发短信方法

    在创业团队中 xff0c 一个重要的原则是能省就省 xff0c 该花就花 xff0c 把银子用在刀刃上 现在的app xff0c 为了获取用户的社交关系 xff0c 需要用户的手机号注册 用手机号注册就涉及到一个发送短信验证码的问题 xff
  • 20.如何从app业务逻辑提炼api接口

    在app后端的工作中 xff0c 设计api是一个很考验设计能力的工作 在项目的初始阶段 xff0c 只知道具体的业务逻辑 xff0c 那怎么把业务逻辑抽象和提炼 xff0c 设计出api呢 xff1f 通过阅读本文 xff0c 可解答以上
  • 21.app后端如何高效更新内容

    在app的主页或通知栏 xff0c 经常需要通过api取最新的数据 那么 xff0c 怎么在这部分上做优化 xff0c 使获取内容的效率更高呢 xff1f 在本文中 xff0c 通过推拉和增量更新 xff0c 实现了一种高效获取数据的策略
  • 22.在创业公司中的成长

    在 app后端 qq群中 xff0c 经常被问到的一个问题 xff1a 怎么设计一个应付高并发的架构 诚然 xff0c 设计一个能应付百万流量的高并发架构 xff0c 是很令人兴奋的技术挑战 xff0c 但在创业公司中的成长 xff0c 难
  • 23.app后端如何架设文件系统

    现在app展现内容的形式多种多样的 xff0c 有文字 xff0c 图片 xff0c 声音 xff0c 视频等等 xff0c 其中文件占了一个很大的比重 随着app不断运营 xff0c 文件会越来越多 xff0c 占用的磁盘空间也不断增大
  • 24.从公众号筹集10万股份学到的商业化思维

    1 忽然间看到了卖公众号的股份的玩法 昨天 xff0c 在公众号 老鹰说 id joeytalks 看到了他要弄一个新的玩法 xff0c 卖公众号的股份 xff0c 熟人1000块一股 xff0c 陌生人2000块一股 当时不以为然 xff
  • 25.创业真的需要app吗?真的需要外包吗?

    两个星期前 xff0c 一名亲戚的朋友打算投入自己的二十多万元去搞个摄影社交app xff0c 问我有没有靠谱的外包推荐 xff0c 我赶紧劝住他 xff0c 现在app的成本已经非常高了 xff0c 初期的研发就要十几万 xff0c 加上
  • HarmonyOS鸿蒙的测试体验

    HarmonyOS 2 0手机开发者Beta公测招募 xff0c 申请开发者账号 xff0c 报名 xff0c 就可以抢先体验 除了抢先体验 xff0c 使用真机测试外 xff0c 使用模拟器也可以尝试体验 那测试人员可以使用HVD和Clo
  • 单点登录 Ucenter 分析

    原文 xff1a http blog csdn net ebw123 article details 9417231 首先我们先来了解下 Ucenter登录步骤 1 用户登录discuz xff0c 通过logging php文件中的函数u
  • 当Ucenter和应用通信失败

    http blog sina com cn s blog 775f158f010135uz html 失败是常见的 对于初次接触Ucenter的人来讲 xff0c 添加一个自己的应用最头疼的就是发现通信失败 如果要解决这个问题 xff0c
  • 26.app后端怎么架设推送服务

    推送服务已经是app的标配了 架设推送服务 xff0c 除了可以使用第三方服务商外 xff0c 也有大量的开源技术可以选择 现在推送主要分两块 xff0c android推送和ios推送 xff0c 在下面分别论述 xff1a 1 Andr
  • 27.app后端搭建聊天服务器的经历

    现在 xff0c 聊天功能已经成了社交app的标配了 但是 xff0c 众多web开发出生的程序员对聊天相关的服务的不了解 xff0c 带来了很多开发上的困扰 在这篇文章中 xff0c 根据下面3个方面 xff0c 谈谈聊天服务 1 聊天服
  • 29.满大街创业团队的年代,一不小心就被忽悠

    长期呆在创业团队中 xff0c 我人品不咋的 xff0c 遇到过各种坑人的项目和团队 下面讲讲3件坑人的事情 1 不靠谱的项目 在第二个创业项目失败后一个星期 xff0c 以前的UI andy忽然找上我 xff0c 有个老板想投资个项目 x
  • (转)cookie和session机制之间的区别与联系

    出处为中国JAVA手机网 lt www cnjm net gt http www cnjm net tech article1113 html 具体来说cookie机制采用的是在客户端保持状态的方案 它是在用户端的会话状态的存贮机制 xff
  • 30.因为绘画,我在豆瓣上认识了老婆

    导读 xff1a 这篇文章的上半部分 xff0c 是我2011年在豆瓣上发表的 五天学会绘画 书评 xff0c 我和老婆就相识于这个书评 后记部分 xff0c 是对绘画 xff0c 和用互联网方法找女友的一些思考 五天学会绘画 xff0c
  • 对太极拳中的“势”有所领悟

    文章标题 对太极拳中的 势 有所领悟 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 今天帮一个亲戚搬杂物 xff0c 从三楼的杂物房搬到一楼的花园 开始领悟 势 是搬一个很重
  • 本人写的Android上RSS阅读器简单介绍

    文章标题 本人写的 Android 上 RSS 阅读器简单介绍 文章作者 曾健生 作者邮箱 zengjiansheng1 64 126 com 作者 QQ 190678908 个人博客 http blog csdn net newjueqi
  • 整合 ucenter 注册自动激活

    http my oschina net banbo blog 311691 应用整合 UCenter xff0c 同步注册到 Discuz 的用户 xff0c 在 Discuz 登录时得手动激活 xff0c 用户体验很不好 xff0c 不过
  • switch case语句用法详解

    switch 开关 的意思 xff0c 是一种 选择 语句 xff0c 它用法非常简单 switch 是多分支选择语句 说得通俗点 xff0c 多分支就是多个 if语句的组合 从功能上说 xff0c switch 语句和 if 语句完全可以