switch case语句的用法

2023-05-16

switch case语句的用法

我们首先来看一下switch case 语句的一般形式是怎样的

switch(表达式){
             case  常量1 :
                   代码块;
                    breakcase  常量2:
                   代码块;
                   break........
            case    常量n:
                    代码块;
                    breakdefault:
                    代码块;
                     break;
}

当表达式的值和下面哪一个常量相等就会执行那个常量所对应的代码块,如果没有与表达式相等的常量时就会执行default下面的代码块。

例如下面这个代码:

import java.util.Scanner;
public class Test01{
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		int s = input.nextInt();
		switch (s){
			case 0:`
				System.out.println("你输入的数字为为:" + 0);
				break;
			case 1:
				System.out.println("你输入的数字为为:" + 1);
			    break;
			case 2:
				System.out.println("你输入的数字为为:" + 2);
			default :
				System.out.println("你输入的数字不是0--2");
		}
	}
}

**输入为1执行case1下面的语句**
**在使用switch case的时候一定要注意不要把break给漏写了,**如果没有break的话,程序在执行完所对应的代码块后会顺序执行下面的语句知道程序结束或者遇到下一个break为止。下面就是我把break给去掉的样子。
我现在把break给去掉了
输入1的时候执行结果就变成了这个样子:
我在输入1的话就会出现以上结果
所以一定要注意不要忘了写break语句。
当多个常量对应同一个代码块时,我们也可以这样使用switch case:

switch(表达式){
           case  常量1case  常量2:
           …
            case 常量n:
                     代码块;
                     breakcase 常量n+1:
                      代码块
                      breakdefault:
                        代码块;
                        break;
}

比如这个代码:

import java.util.Scanner;
public class Test01{
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		int s = input.nextInt();
		switch (s){
			case 0:
			case 1:
				System.out.println("你输入的数字为为0或1");
			    break;
			case 2:
				System.out.println("你输入的数字为为:" + 2);
				break;
			default :
				System.out.println("你输入的数字不是0--2");
		}
	}
}
		

在这里插入图片描述在这里插入图片描述
由此可见,这样写的话无论你输入的是0还是1它结果都是执行的遇到break之前的代码块。当多种情况对应同一种输出时,把代码块相同的case可以直接放到一起,这样可以有效减少重复代码,节省时间提升开发效率。

如果case就把所有情况都讨论到了default语句也可以不写,另外default语句不是只能写在最后,他可以和任意的case语句交换位置,不影响程序的正常运行,但是为了保证代码的可读性,我们一般都写在最后,写在最后的话default的break可以不写,但建议写上。

值得注意的是:case后面的常量值只能是 byte short char int 枚举(5.0及以后版本)String(7.0及以后版本),其余数据类型都不可以,而且同一个switch语句,所有case子句中的常量值互不相同。*

switch case在什么情况中使用比较好呢?
如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型时建议使用swtich语句。

switch case语句都可以转换成if else语句,但能用switch case 建议使用switch case 因为他的效率更高。但对于其他情况:对区间判断,对结果为boolean类型判断,只能使用if,if的使用范围更广。 也就是说,使用switch-case的,都可以改写为if-else。反之不成立

好了,这就是我总结的switch语句的基本用法,有什么不当的地方还望各位读者指出来,我一定积极改正。

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

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

  • SQL ORDER BY 与 CASE 与 UNION ALL

    运行 PostgreSQL 7 4 和 8 x 我认为这是有效的 但现在我遇到了错误 我可以单独运行查询 它工作得很好 但如果我 UNION 或 UNION ALL 它会抛出错误 出现错误 警告 pg query 查询失败 错误 列 Fie
  • 创建可能案例的简单方法

    我有数据列表 例如 a 1 2 3 4 b a b c d e c 001 002 003 我想创建另一个新的列表 该列表由 a b c 的所有可能情况混合而成 如下所示 d 1a001 1a002 1a003 4e003 是否有任何模块或
  • 如何反转 Java 中字符串的大小写?

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

    如何在 PostgreSQL 中创建交叉表查询 例如我有下表 Section Status Count A Active 1 A Inactive 2 B Active 4 B Inactive 5 我希望查询返回以下交叉表 Section
  • 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 中的 case 语句

    我有一个名为 表事务 具有以下定义 id INT 11 Primary Key action type ENUM Expense Income action heading VARCHAR 255 action amount FLOAT 我
  • MYSQL LEFT JOIN 与 CASE 优化

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

    有没有在 PHP 和 Laravel Eloquent 方面有经验的人可以帮助我解决这个问题 我试图在 raw 方法中注入一个 CASE WHEN END 似乎完全被忽视了 现有的文档还没有 我尝试了几种不同的方法 但都没有成功 我正在努力
  • switch执行所有case语句

    有人能解释一下为什么我的循环从 0 到 7 吗 我只需要获取前 3 种情况 但程序正在经历所有情况 代码位于 show 方法中 for brojac 0 brojac lt 3 brojac switch brojac case 1 fig
  • Scala 2.9 后究竟会删除哪些围绕案例类的内容?

    我知道计划对案例类进行一些更改 例如禁止它们之间的继承 scala gt case class Foo defined class Foo scala gt case class Bar extends Foo
  • 是否无法检查案例陈述条件中的列表项目?

    我正在尝试检查 Oracle 10g 中 case 语句的条件部分中的项目列表是否包含特定数字 我明白了ORA 00936 missing expression虽然错误 我正在尝试做类似以下的事情 Select case some colu
  • SQL 使用 CASE 语句更新列中的行

    我有两个表 用户和 TempTable 它是用户的子集 我想更新 Users 表中的 IsActive 列 如果 TempTable 中的用户也在 Users 表中 我想设置 IsActive 1 否则设置 IsActive 0 从不在 T
  • 红宝石案例陈述与比较[重复]

    这个问题在这里已经有答案了 有没有办法使用caseruby 中整数比较的语句 我发现了很多比较字符串的例子 但是我的case下面的示例因语法错误而失败 def get price rank price case price when lt
  • SQLite 查询中的 CASE 语句

    为什么这个查询不起作用 我尝试替换嵌套 IF 语句 SET key IF key gt 11 key 5 IF lkey gt 5 lkey 2 lkey UPDATE pages SET lkey CASE lkey WHEN lkey
  • MYSQL触发器使用case语句设置日期时间值

    我正在使用 mysqlimport 进行大量表插入 替换重复的主键 有几个表具有日期时间列 其中的记录包含值 0000 00 00 我想要的是一个触发器 它检测这些 0000 00 00 值并替换为 1950 01 01 否则将日期时间值保
  • 是否有一个函数可以查找字符向量中的所有小写字母?

    我刚刚写了一个 但我想知道 R 中是否已经存在一个 顺便说一句 这是函数 欢迎提出改进建议 set seed 50 x lt sample c letters LETTERS 7 is lower lt function x unlist
  • 选定的非聚合值必须是关联组的一部分

    我在 Teradata 中有两个表 Table A 和 Table B 它们之间是 LEFT JOIN 之后我将创建 SELECT 语句 其中包含两个表中的属性 SELECT attribute 1 attribute 2 attribut
  • 如何编写SSIS switch/case 表达式?

    这是一个 SQL Server Integration Services SSIS 表达式问题 我对此还很陌生 我想在派生列转换中编写一个 switch case 表达式 基本上 新列可以根据输入列的值有 5 个不同的可能值 我从谷歌得到的
  • PHP switch case 在 case 中存在多个值

    我有一个变量保存值 每周 每月 季度 和 年度 还有另一个变量保存值从 1 到 10 switch var2 case 1 var3 Weekly break case 2 var3 Weekly break case 3 var3 Mon

随机推荐

  • springboot整合canal实现对mysql数据库实时监控

    canal Canal介绍Mysql环境准备安装canalspringboot整合canal Canal介绍 官网地址 xff1a https github com alibaba canal canal k n l xff0c 译意为水道
  • tensorflow2.6.0安装 another metric with the same name already exists

    终端直接输入pip install tensorflow 61 61 2 6 0 但是这里有一点问题 span class token keyword import span os span class token keyword impo
  • Java编程心得体会

    初次学习Java编程的心得与体会 之前学习过c语言 xff0c python编程 xff0c 对比Java编程首先感觉到的区别就是Java环境配置比较复杂 xff0c 编程工具安装比较麻烦 课堂上老师讲到首先下载安装jdk xff0c 然后
  • Ubuntu18.04+ROS-melodic环境 px4+move_base仿真遇到的问题

    前前后后安了三个虚拟机 xff0c 折腾了快一个月了吧 第四次用双系统终于实现了 每次都有不同的坑 1 错误 xff1a gz symbol lookup error usr lib x86 64 linux gnu libgazebo c
  • 【谷粒学院】项目总结

    做谷粒学院这个项目大概花了2个多月的时间 xff0c 期间遇到了很多问题 xff0c 想要记录下来 xff0c 希望可以对别人有所帮助 首先谷粒学院项目我是不太推荐时间紧张的友友拿来做为毕设项目的 xff0c 原因是里面涉及到的技术 服务很
  • 完美解决make -f Makefile.unx报错问题 +Centos

    这里写自定义目录标题 本人亲测成功 导读 xff1a 我用这个命令主要是针对编译hadoop的 xff0c 其中有个isa l安装 xff0c 是英特尔 ISA L技术即 xff08 Intel Intelligent Storage Ac
  • 关于Gitee创建存储库多人协作流程

    关于Gitee创建存储库多人协作流程 主要解决在IDEA工具开发下通过Gtiee多人协作 xff0c 共同开发 前期准备 IDEA xff1a IDEA当前文档使用版本为2021 3 1 Git xff1a IDEA安装Gitee插件 流程
  • ajax上传文件,图片并显示与删除(spring boot)

    思路 xff1a 先上传文件然后在读出来 之前本人都是用form提交上传文件 xff0c 现在写个ajax的文件上传 先看下效果 xff1a 上传并在页面显示 关键代码 xff1a 在启动类里面加入 span class token com
  • opencv-python——调用摄像头或导入视频实现颜色识别并画框

    采用opencv进行颜色识别有个好处就是他的框可以是具有角度的长方体框 xff0c 不局限于平行点的 文章目录 颜色识别实现过程1 调用摄像头 导入视频或读入照片2 找出所需颜色对应的HSV阈值3 找出二值化后的图片中的特征点并进行画框 完
  • Ubuntu18.04——python2安装opencv4.1版本并代替ROS自带的低版本opencv

    软件环境 Ubuntu 18 04系统ROS melodic 查看安装ROS默认安装的CV2位置 改个名 xff0c 不要是cv2就ok xff1a 查看是否移除 可以发现还有一个cv2的so文件 xff0c 所以我们需要将这个也移除 改个
  • 直流电机驱动电路设计-----学习笔记

    直流电机驱动电路的设计目标 在直流电机驱动电路的设计中 xff0c 主要考虑一下几点 xff1a 1 功能 xff1a 电机是单向还是双向转动 需不需要调速 对于单向的电机驱动 xff0c 只要用一个大功率三极管或场效应管或继电器直接带动电
  • ROS——问题解决:rqt工具包中image_view消失;bash: rosrun rqt_image_view未找到命令

    重装rqt工具 span class token function sudo span span class token function apt get span span class token function install spa
  • VS Code——Git插件使用指南

    文章目录 一 基于VScode本地新建工程并上传到Github1 新建工程文件夹并用Vscode打开该文件夹2 初始化存储库3 暂存更改4 提交暂存更改5 同步到Github中6 在Github中查看项目 二 Git clone到本地后进行
  • Ubuntu18.04——查看CPU, GPU,内存利用率

    htop查看CPU和内存利用率 sudo apt install htop 启动htop htop 查看NVIDIA GPU利用率 nvidia smi 以每秒1次的刷新频率实时查看 nvidia smi l 1
  • Ubuntu18.04——基于X86和Arm安装并配置Realsense-ros环境

    文章目录 基础安装1 安装ROS2 安装Realsense驱动以及依赖库 xff08 1 xff09 X86安装librealsense更新 xff08 2 xff09 Arm编译安装librealsense xff08 或者Apt无法下载
  • 【Rt-Thread】STM32输出PWM

    1 实验目标 STM32输出不同频率的占空比为50 的PWM信号 xff0c 控制蜂鸣器音调 2 硬件部分 2 1 模块介绍 xff08 1 xff09 主控芯片 F405RGT6 xff08 2 xff09 蜂鸣器 低电平触发 2 2 接
  • 考研复试实用指南

    Preface 考研初试已经结束 xff0c 但是考研这场仗还没打完 xff0c 接下来 xff0c 我们将走入复试的战场 考研复试并不是走过场 xff0c 是有严格的淘汰比例的 xff1b 考研复试并不是关系网 xff0c 是有公开而透明
  • 2020oop第一次练习 6-3 字符串 - 6. 查找子串(BF算法) (10分)

    C语言标准函数库中包括 strstr 函数 xff0c 在主串中查找子串 作为练习 xff0c 我们自己编写一个功能与之相同的函数 函数原型 char StrStr const char txt const char pat 说明 xff1
  • 信号量——二值信号量

    信号量 二值信号量 信号量简介 信号量是操作系统的重要部分 xff0c 信号量一般用来进行资源管理和任务同步 FreeRTOS中信号量分为二值信号量 互斥信号量 计数信号量和递归互斥信号量 xff0c 应用场景各不同 二值信号量 二值信号量
  • switch case语句的用法

    switch case语句的用法 我们首先来看一下switch case 语句的一般形式是怎样的 span class token keyword switch span xff08 表达式 xff09 xff5b span class t