Java SE入门及基础(10)

发布时间:2024年01月13日

switch选择结构

1. 概念

switch 表示开关的意思,为了帮助理解,下面以线路为例,进行解释说明

上图中表示一条带有多个开关的线路,当开关打开时,该开关所控制的灯即被点亮。

2. 语法规则

switch ( 表达式 ){? ? // 作用在表达式的结果上
????????case 常量 1 :? ? // 如果表达式的结果为常量 1 ,表示该开关被打开,那么代码块 1 将被执行
????????????????//代码块1
????????????????break ;?? // 表示开关已经做完事情,跳出 switch
????????case 常量 2 :?? // 如果表达式的结果为常量 2 ,表示该开关被打开,那么代码块 2 将被执行
????????????????//代码块2
????????????????break ;?? // 表示开关已经做完事情,跳出 switch
????????case 常量 3 :?? // 如果表达式的结果为常量 3 ,表示该开关被打开,那么代码块 3 将被执行
????????????????//代码块3
????????????????break ;?? // 表示开关已经做完事情,跳出 switch
????????default :?? // 如果表达式的结果不在常量 1 、常量 2 、常量 3 中,表示该开关被打开,那么代码块 4 将被执行
????????????????//代码块4
????????????????break ;?? // 表示开关已经做完事情,跳出 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 ,因此会执行 case2
????????case 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 ,因此会执行 case2
????????case 1 :
????????????????salary += 500 ;
????????????????break ;
????????case 2 : // 重复的 case
????????????????salary += 800 ;
????????????????break ;
????????case 2 : // 重复的 case
????????????????salary += 1200 ;
????????????????break ;
????????case 4 :
????????????????salary += 2000 ;
????????????????break ;
}
System . out . println ( " 年终调薪后的薪资为: " + salary );

更多Java?SE文章参考:Java SE入门及基础知识合集-CSDN博客

文章来源:https://blog.csdn.net/m0_63181360/article/details/135576969
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。