switch选择结构
1. 概念
switch
表示开关的意思,为了帮助理解,下面以线路为例,进行解释说明
上图中表示一条带有多个开关的线路,当开关打开时,该开关所控制的灯即被点亮。
2. 语法规则
switch ( 表达式 ){ // 作用在表达式的结果上case 常量 1 : // 如果表达式的结果为常量 1 ,表示该开关被打开,那么代码块 1 将被执行//代码块1break ; // 表示开关已经做完事情,跳出 switchcase 常量 2 : // 如果表达式的结果为常量 2 ,表示该开关被打开,那么代码块 2 将被执行//代码块2break ; // 表示开关已经做完事情,跳出 switchcase 常量 3 : // 如果表达式的结果为常量 3 ,表示该开关被打开,那么代码块 3 将被执行//代码块3break ; // 表示开关已经做完事情,跳出 switchdefault : // 如果表达式的结果不在常量 1 、常量 2 、常量 3 中,表示该开关被打开,那么代码块 4 将被执行//代码块4break ; // 表示开关已经做完事情,跳出 switch}
3. switch支持的数据类型
byte short int char Enum String
switch
选择结构从
JDK1.7
开始才支持
String
类型
4. 案例
某公司在年终决定对研发部工作人员根据职位级别进行调薪,调薪信息如下:
请从控制台输入员工当前薪水和职位级别,并计算出年终调薪后的薪资。
流程图
代码实现
public class Example8 {public static void main ( String [] args ) {Scanner sc = new Scanner ( System . in );System . out . println ( " 请输入当前薪资: " );int salary = sc . nextInt ();System . out . println ( " 请输入职位级别: " );int level = sc . nextInt ();switch ( level ){case 1 :salary += 500 ;break ;case 2 :salary += 800 ;break ;case 3 :salary += 1200 ;break ;case 4 :salary += 2000 ;break ;}System . out . println ( " 年终调薪后薪资为: " + salary );}}
5. 常见误区
//case 中没有 break 语句。int level = 2 ;switch ( level ){ //switch 作用在 level 上,而 level 的值是 2 ,因此会执行 case2case 1 :salary += 500 ;//break;case 2 :salary += 800 ; // 得到执行,因为该 case 中没有 break 语句,因此会一次往下执行//break;case 3 :salary += 1200 ; // 得到执行//break;case 4 :salary += 2000 ; // 得到执行//break;}System . out . println ( " 年终调薪后的薪资为: " + salary );//case 后面的常量重复,编译时会报异常int level = 2 ;switch ( level ){ //switch 作用在 level 上,而 level 的值是 2 ,因此会执行 case2case 1 :salary += 500 ;break ;case 2 : // 重复的 casesalary += 800 ;break ;case 2 : // 重复的 casesalary += 1200 ;break ;case 4 :salary += 2000 ;break ;}System . out . println ( " 年终调薪后的薪资为: " + salary );