当前位置 : 主页 > 编程语言 > 其它开发 >

Switch分支结构

来源:互联网 收集:自由互联 发布时间:2022-05-30
多重选择:switch语句 在处理多个选项时,使用多个 else/if 语句会使结构显得很臃肿。Java有一个和C/C++完全相同的switch语句。 例如,如果建立一个如下图所示的包含5个选项的系统,完全
多重选择:switch语句

在处理多个选项时,使用多个 else/if 语句会使结构显得很臃肿。Java有一个和C/C++完全相同的switch语句。

例如,如果建立一个如下图所示的包含5个选项的系统,完全可以用使用switch语句完成。

public class Grade {
    public static void main(String[] args) {
        //输入学生成绩,90分以上为A级,80~89为B级,70~79为C级,60~69为D级,其他都为F级
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生成绩:");
        int score = scanner.nextInt();
        String grade;
        //将输入的成绩除以10的值作为switch语句的条件判断式
        switch (score/10) {
            case 9:
                grade = "A";
                break;
            case 8:
                grade = "B";
                break;
            case 7:
                grade = "C";
                break;
            case 6:
                grade = "D";
                break;
            default:
                grade = "F";
        }
        System.out.println("这个学生成绩等级为:" + grade + "级");
    }
}
//解读:
/*满足条件1时,执行语句1,然后结束switch分支结构 接着执行后续代码;
满足条件2时,执行语句2,然后结束switch分支结构 接着执行后续代码;
满足条件3时,执行语句3,然后结束switch分支结构 接着执行后续代码;
满足条件4时,执行语句4,然后结束switch分支结构 接着执行后续代码;
都不满足,则会执行default中的语句5,然后结束switch分支结构 接着执行后续代码。/*

tips:从Java 7 开始,case标签的类型可以是char、byte、short、int、String、枚举类型。

注意:

  • 在switch语句里,如果case标签没有break语句,则会接着执行下一个case分支的语句,直到执行到最后为止,这也就是所说的穿透效果,在Java中并不推荐使用switch语句。
  • default一般放在case的最后,也可以不使用default语句,default如果在最后可以省略不写break语句,如果在中间就必须得写break语句,否则会发生穿透效果。

穿透效果示例:

public class Test {	
	public static void main(String[] args) {
        int num = 2;
        switch (num) {
            case 1:
                System.out.println("这是1----");
            case 2:
                System.out.println("这是2----");
            case 3:
                System.out.println("这是3----");
            case 4:
                System.out.println("这是4----");
            default:
                System.out.println("这啥也不是---");
        }
    }
}
/*
输出结果为:
这是2----
这是3----
这是4----
这啥也不是---
*/

正常情况下(写了break语句的)输出结果为:

这是2----

如果没写,就会从匹配的case语句那里“一穿到底”,所以在使用时一定不要把break忘了!!!

上一篇:基本Dos命令
下一篇:没有了
网友评论