Java基础之switch分支结构详解

一、基本语法

二、流程图

1.画出 swtich 出流程

2.案例说明流程图

三、快速入门

  • 案例:Switch01.java

请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g

a 表示星期一,b 表示星期二 …
根据用户的输入显示相应的信息.要求使用 switch 语句完成
代码:

/*
	案例:Switch01.java
	请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
	a表示星期一,b表示星期二 …
	根据用户的输入显示相应的信息.要求使用 switch 语句完成

	思路分析
	1. 接收一个字符 , 创建Scanner对象
	2. 使用switch 来完成匹配,并输出对应信息
	代码

	 */
	Scanner myScanner = new Scanner(System.in);
	System.out.println("请输入一个字符(a-g)");
	char c1 = myScanner.next().charAt(0);//
	//在java中,只要是有值返回,就是一个表达式
	switch(c1) {
		case 'a' :
			System.out.println("今天星期一,猴子穿新衣");
			break;
		case 'b' :
			System.out.println("今天星期二,猴子当小二");
			break;
		case 'c' :
			System.out.println("今天星期三,猴子爬雪山..");
			break;
		//.....
		default:
			System.out.println("你输入的字符不正确,没有匹配的");

	}

	System.out.println("退出了switch ,继续执行程序");

四、switch 注意事项和细节讨论

//细节1
	//表达式数据类型,应和case 后的常量类型一致,
	//或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int

	//细节2
	//switch(表达式)中表达式的返回值必须是:
	//(byte,short,int,char,enum[枚举],String)

	//细节3
	//case子句中的值必须是常量(1,'a')或者是常量表达式,而不能是变量
	//
	//细节4
	//default子句是可选的,当没有匹配的case时,执行default
	//如果没有default 子句,有没有匹配任何常量,则没有输出
	//
	//细节5
	//break语句用来在执行完一个case分支后使程序跳出switch语句块;
	//如果没有写break,程序会顺序执行到switch结尾,除非执行到break
	char c = 'b';
	char c2 = 'c';
	switch(c) {
		case 'a' :
			System.out.println("ok1");
			break;
		case 'b'  :
			System.out.println("ok2");
			break;
		default :
			System.out.println("ok3");
	}

	System.out.println("退出了switch,继续执行..");

把上面的case b中的 break 都去掉,会都执行下面输出语句,不会跳出来。

五、switch 课堂练习

SwitchExercise.java

1.使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 “other”。

//使用 switch 把小写类型的
	//char型转为大写(键盘输入)。只转换 a->A, b->B, c, d, e.
	//其它的输出 "other"。
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入a-e");
	char c1 = sc.next().charAt(0);
	switch(c1) {
		case 'a' :
			System.out.println("A");
			break;
		case 'b' :
			System.out.println("B");
			break;
		case 'c' :
			System.out.println("C");
			break;
		case 'd' :
			System.out.println("D");
			break;
		case 'e' :
			System.out.println("E");
			break;
		default :
			System.out.println("你的输入有误~");

	}

2.对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100), 提示: 成绩/60

//对学生成绩大于60分的,输出"合格"。低于60分的,
	//输出"不合格"。(注:输入的成绩不能大于100), 提示 成绩/60
	//思路分析
	//1. 这道题,可以使用 分支来完成, 但是要求使用switch
	//2. 这里我们需要进行一个转换, 编程思路 :
	//   如果成绩在 [60,100] , (int)(成绩/60) = 1
	//   如果成绩在 [0,60) , (int)(成绩/60) = 0 

	//代码实现
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入成绩在0-100之间:");
	double score = sc.nextDouble();
	if (score >= 0 && score<=100) {
	    switch ((int) (score / 60)) {
	        case 0:
	            System.out.println("不合格");
	            break;
	        case 1:
	            System.out.println("合格");
	    }
	}else{
	    System.out.println("请输入成绩在0-100之间");
	}

3.根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示: 使用穿透 ]

//根据用于指定月份,
	//打印该月份所属的季节。
	//3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季
	//[课堂练习, 提示 使用穿透 ]
	//
	//思路分析
	//1. 创建Scanner对象, 接收用户输入
	//2. 使用 int month 接收
	//3. 使用switch 来匹配 ,使用穿透来完成,比较简洁

	Scanner myScanner = new Scanner(System.in);
	System.out.println("输入月份");
	int month = myScanner.nextInt();
	switch(month) {
		case 3:
		case 4:
		case 5:
			System.out.println("这是春季");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("这是夏季");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("这是秋季");
			break;
		case 1:
		case 2:
		case 12:
			System.out.println("这是冬季");
			break;
		default :
			System.out.println("你输入的月份不对(1-12)");
	}

六、switch 和 if 的比较

如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可以使用,建议使用 swtich 语句。其他情况:对区间判断,对结果为 boolean 类型判断,使用 ifif 的使用范围更广。

到此这篇关于Java基础之switch分支结构详解的文章就介绍到这了,更多相关Java switch分支结构内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; ... case default: //...; break; } swtich()变量类型只能是int.short.char.byte和enum类型(JDK 1.7 之后,类型也可以是String了).当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况: 情况一:若未

  • Java实现转跳不同系统使用枚举加switch的方式示例

    因有个判断需要处理不同系统类型跳转不同系统.考虑用switch + 枚举的方式. 具体使用案例如下: package com.b2b.common.constant; import com.base.utils.base.StringUtils; /** * 系统类型枚举 * @author shijing */ public enum SystemType { ERP(0,"ERP"), ORDER_PLATFORM(1,"订货平台"), PERSONAL(2,&

  • Java switch关键字原理及用法详解

    这篇文章主要介绍了Java中 switch关键原理及用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Switch语法 switch作为Java内置关键字,却在项目中真正使用的比较少.关于switch,还是有那么一些奥秘的. 要什么switch,我有if-else 确实,项目中使用switch比较少的一个主要原因就在于它的作用能被if-else代替,况且switch对类型的限制,也阻碍了switch的进一步使用. 先看看switch的语法

  • JAVA字符串类型switch的底层原理详析

    前言 switch 语句是非常的基础的知识,掌握起来也不难掌握,语法比较简单.但大部分人基本是知其然,不知其所以然.譬如 早期JDK只允许switch的表达式的值 int及int类型以下的基本类型,后期的JDK却允许匹配比较 字符串.枚举类型,这是怎么做到的呢?原理是什么?本文将深入去探索. 基础 我们现在使用的Java的版本,基本上是都支持String类型的.当然除了String类型,还有int.char.byte.short.enum等等也都是支持的.然而在其底部实现中,还是基于 整型的,也

  • Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),  在java1.7后支持了对string的判断 还有一点要注意的是:在java中如果switch的case语句中少写了break;这个关键字,在编译的时候并没有报错.但是在执行的时候会一直执行所有case条件下的语句并不是去判断,所以会一直执行直到遇到break关键字跳出或者一直执行到defaut语句. 还有就是如果

  • java中switch选择语句代码详解

    switch结构(开关语句)的语法 switch(表达式 ){ --->类型为int.char case 常量1 :--->case 结构可以有多个 //语句块1 break; --->程序跳出switch结构 case 常量n :--->常量的值不能相同 //语句块n break; default:--->和if结构中的 else作用相同 //语句块 break; } 下面看一段代码示例,有详细的注释,大家可以参考: public class SwitchStu{ /* s

  • 详解java中if语句和switch的使用

    if语句 说起if语句,那么不得不提起三元运算符 a>b?c=0:c=1; 如果a>b结果为true,那么c=0,为false,c=1 那么下面看下if语句 if(a>b)c=0; 如果a>b为true,那么c=0 是不是觉得很像,但是还是觉得有一点不像 那么 if(a>b){ c = 0; }else{ c = 1; } 这样是不是看着很像了,如果a>b结果为true,那么c=0,为false则走else里面的内容,c=1 多条件判断 public class Dem

  • Java switch多值匹配操作详解

    这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大多情况下用来匹配单个值,如下面的例子所示: /** * @author 栈长 */ private static void test(int value) { switch (value) { case 1: System.out.println("1"); break; case 2:

  • Java枚举类型在switch语句正确使用方法详解

    很多人也许会尝试写下这样的代码: ResultStructureEnum type = ResultStructureEnum.valueOf(userType); switch (type) { case ResultStructureEnum.STUDENT: ... break; case ResultStructureEnum.TEACHER: ... break; case ResultStructureEnum.PARENT: ... break; ... } # 这样编译不会通过,

  • Java中switch的三种用法方式

    Java中switch的三种用法详解: switch居然有三种方式 ? 作为一个接触java不久的人来说,这确实让我吃了一惊! 根据版本,在java14开始, switch语句有了一个很大的调整, 这就让swicth语句有了更多的操作和选择,在代码上,更加的简便灵活, 让我们试试这神奇的switch吧! 使用switch这个关键词, 我们可以很好的解决if-else 中多重选择的尴尬场面! Java中switch的三种用法详解: switch 标准方式 switch - > 用法: switch

  • Java switch使用原理及实例解析

    这篇文章主要介绍了Java switch使用及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java中有两个经常用于条件判断的方法,一个是if{}else{},另一个就是switch()了.总的来说因为switch可以直接一对一满足条件,不满足条件的情况是不会执行的的所以switch的效率会相对if{}else{}更高一些,而且这两个方法是可以无门槛互换的. switch的使用: 能用于switch判断的类型有:byte.short.

  • Java switch 语句如何使用 String 参数

    问题 当我尝试在 switch 语句使用 String 参数时(注意ctrType为字符串) switch (ctrType) { case "01" : exceptionType = "读FC参数数据"; break; case "03" : exceptionType = "读FC保存的当前表计数据"; break; default: exceptionType = "未知控制码:"+ctrType;

  • Java Switch对各类型支持实现原理

    switch Java7开始,switch的参数可以是String类型了,这真的是一个很有用的改进,毕竟string还是挺常用的.到目前为止,switch支持的参数类型有:byte.short.int.char.String.enum.switch对各种类型参数的支持到底是怎么实现的呢? byte.short.int public class Main2 { public static void main(String[] args) { byte b = 1; switch (b) { cas

  • 浅谈java switch如果case后面没有break,会出现什么情况?

    switch表达式的取值:byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是String 如下代码, case"A" :之后没有break,此刻会继续执行 case "B":的代码 System.out.println("bbbbbbbb");遇到break之后,代码运行结束. public static void main(String[] args) { String s = "A"; sw

随机推荐