选择结构switch
1.选择结构switch
switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:
用于表示星期的数字
如果等于1,则输出星期一
如果等于2,则输出星期二
如果等于3,则输出星期三
如果等于4,则输出星期四
如果等于5,则输出星期五
如果等于6,则输出星期六
如果等于7,则输出星期天
对于上面一段伪代码的描述,大家可能会立刻想到用刚学过得if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。Java中提供了一种switch语句来实现这种需求,在switch语句中使用switch关键字来描述一个表达式,使用case关键字来描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。具体实现代码如下:
switch(用于表示星期的数字) {
case 1 :
输出星期一;
break;
case 2 :
输出星期二;
break;
case 3 :
输出星期三
break;
case 4 :
输出星期四;
break;
case 5 :
输出星期五;
break;
case 6:
输出星期六;
break;
case 7:
输出星期天;
break;
}
上面改写后的伪代码便描述了switch语句的基本语法格式,具体如下:
switch (表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
在上面的格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字将在后面的做具体介绍,此处,我们只需要知道break的作用是跳出switch语句即可。
需要注意的是,在switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其它类型的值,程序会报错。但上述说法并不严谨,实际上在JDK5.0中引入的新特性enum枚举也可以作为switch语句表达式的值,在JDK7.0中也引入了新特性,switch语句可以接收一个String类型的值。
2.选择结构switch练习
接下来通过一个案例演示根据数字来输出中文格式的星期,如下所示。SwitchDemo01.java
public class SwitchDemo01 {
public static void main(String[] args) {
int week = 5;
switch (week) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("输入的数字不正确...");
break;
}
}
}
运行结果如图所示。

上述代码中,由于变量week的值为5,整个switch语句判断的结果满足第17行的条件,因此打印“星期五”,例程中的default语句用于处理和前面的case都不匹配的值,将第3行代码替换为int week = 8,再次运行程序,输出结果如下图所示。

在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。例如,要判断一周中的某一天是否为工作日,同样使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时就视为工作日,否则就视为休息日。接下来通过一个案例来实现上面描述的情况,如下所示。SwitchDemo02.java
public class SwitchDemo02 {
public static void main(String[] args) {
int week = 2;
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
System.out.println("今天是工作日");
break;
case 6:
case 7:
// 当 week 满足值 6、7 中任意一个时,处理方式相同
System.out.println("今天是休息日");
break;
}
}
}
运行结果如下图所示。

上述代码中,当变量week值为1、2、3、4、5中任意一个值时,处理方式相同,都会打印“今天是工作日”。同理,当变量week值为6、7中任意一个值时,打印“今天是休息日”。
选择结构switch的更多相关文章
- Golang的选择结构-switch语句
		Golang的选择结构-switch语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选择语句应用场景概述 选择结构也称为条件判断,生活中关于判断的场景也非常的多,比如: ( ... 
- 基础语法-选择结构switch
		基础语法-选择结构switch 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Switch语句特点 switch语句选择的类型在jdk1.6只支持四种:byte,short,i ... 
- 【学习笔记】【C语言】选择结构-switch
		1.用法 switch(整型表达式) { case 数值1: 语句1; break; case 数值2: 语句2; br ... 
- 选择结构——switch语句
		1.switch语句 语法格式: switch (表达式){ case 常量 1: 语句; break; case 常量 2: 语句; break; case 常量 3: 语句; break; --- ... 
- 选择结构if语句和switch语句的区别
		------- android培训.java培训.期待与您交流! ---------- 1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if( ... 
- MATLAB顺序结构程序和switch实现选择结构
		数据操作 (1)数据输入: A=input(提示信息,选项) (2)数据输出: disp(输出项) (3)程序暂停 pause(延迟秒数)若无内容,则需用户按任意键继续 3.2if语句 整非零为真 矩 ... 
- java中的结构--switch选择结构
		if-switch 选择结构 switch结构可以更好的解决等值判断问题switch 选择结构的语法:switch (表达式){ case 常量 1: //代码块1: break; case 常量 2 ... 
- Java流程控制04——Switch选择结构
		switch 多选择结构 switch case 语句判断一个变量与一系列值中某个值是否相等,每个支撑位一个分支. switch语句中的变量类型可以是: byte short int 或者 char ... 
- 黑马程序员——C语言基础  流程控制 选择结构和循环结构
		---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ... 
随机推荐
- Boost多线程编程
			Boost多线程编程 背景 • 今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率:为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序: GUI应用程序将那些费时, ... 
- <pre>标签的基本样式设置
			断行 在html中,换行符无法在一般标签内作为布局控制显示,包括xml实体 和 均表现为white-space,仅用于断字[1]. 一般情形下,可使用<br>标签断行:但需要从原始xml文 ... 
- centos7怎么永久修改hosname
			centos7怎么永久修改hosname 其实,一般来说安装好虚拟机之后,一般都会进行修改hostname,之前也是在修改的时候,遇到过问题,但是没有深究,今天在修改的时候,好好研究了一下,之前看到好 ... 
- LA 6893 矩阵HASH (模板)
			#include<stdio.h> #include<string.h> typedef unsigned long long ULL; ; ; int test,n,m,x, ... 
- Linux安装nodejs和npm
			先安装,nvm,即是Node Version Manager(Node版本管理器) curl -o- https://raw.githubusercontent.com/creationix/nvm/ ... 
- swift 学习- 11 -- 属性
			// '属性'将值跟特定的类, 结构体或枚举关联, 存储属性常量或变量作为实例的一部分,而计算属性计算(不是存储) 一个值, 计算属性可以用于 类, 结构体, 枚举, 存储属性只能用于 类 和 结构体 ... 
- Swift 学习- 05 -- 集合类型
			// 集合类型 // swift 提供 Arrays , Sets 和 Dictionaries 三种基本的集合类型用来存储数据 , 数组(Arrays) 是有序数据的集, 集合(Sets)是无序无重 ... 
- Notepad++怎么增加整行删除快捷键?添加/取消区块注释?
			1.有网友说 Notepad++ 自带删除行功能,用快捷键 Ctrl+L 就可以删除一行.的确,这个快捷键是可以删除一行文本,但确切的说,Ctrl+L 并不是仅仅删除了一行文本,而是 剪切 了一行文本 ... 
- Confluence 6 其他 MBeans 和高 CPU 消耗线程
			其他 MBeans 希望监控 Hibernate 和 Hazelcast(仅针对 Confluence 数据中心)你需要在你的 setenv.sh / setenv.bat 文件中添加下面的内容. s ... 
- iOS运行时使用(动态添加方法)
			1 举例 我们实现一个Person类 然后Person 其实是没得对象方法eat:的 下面调用person的eat方法 程序是会奔溃的 那么需要借助运行时动态的添加方法 Person *p = [[ ... 
