首页 > 编程笔记 > Java笔记 阅读:6

Java switch case分支语句详解(附带实例)

在 Java 编程中,一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测,以此类推。当然,这种问题使用 if 条件语句也可以完成。

例如,使用 if 语句对考试成绩进行评估,关键代码如下:
if (grade == 'A') {
    System.out.println("真棒");
}
if (grade == 'B') {
    System.out.println("做得不错");
}
这个程序显得比较笨重,程序员需要测试不同的值来给出输出语句。在 Java 中,可以用 switch case 语句将动作组织起来,以一个较简单明了的方式来实现“多选一”的选择。

switch case 语句的语法如下:
switch(表达式) {
    case 常量值1:
        语句块1
        [break;]
    ...
    case 常量值n:
        语句块n
        [break;]
    default:
        语句块n+1;
        [break;]
}
switch 语句中表达式的值必须是整型、字符型、字符串类型或枚举类型,常量值 1~n 的数据类型必须与表达式的值的类型相同。

switch 语句首先计算表达式的值,如果表达式的计算结果和某个 case 后面的常量值相同,则执行该 case 语句后的若干条语句,直到遇到 break 语句。此时,如果该 case 语句中没有 break 语句,则将继续执行后面 case 中的若干条语句,直到遇到 break语句。

若没有一个常量的值与表达式的值相同,则执行 default 后面的语句。default 语句为可选的,如果它不存在,且 switch 语句中表达式的值不与任何 case 的常量值相同,那么 switch 语句就不做任何处理。

使用 switch case 语句,有以下几个注意事项:
switch case 语句的执行过程如下图所示:


图 1 switch case语句的执行过程

【实例】使用 switch 语句为考试分数分级。
创建 Grade 类,使用 Scanner 类在控制台中输入分数,然后用 switch 多分支语句判断输入的分数属于哪类成绩。10 分和 9 分属于优,8 分属于良,7 分和 6 分属于中,5 分、4 分、3 分、2 分、1 分以及 0 分均属于差。
import java.util.Scanner; // 导入 Scanner 类

public class Grade {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 创建扫描器,接收在控制台中输入的内容
        System.out.print("请输入成绩:"); // 输出字符串
        int grade = sc.nextInt(); // 获取在控制台中输入的数字
        switch (grade) { // 使用 switch 判断数字
            case 10: // 如果等于 10,则继续执行下一行代码
            case 9: // 如果等于 9
                System.out.println("成绩为优"); // 输出成绩为优
                break; // 结束判断
            case 8: // 如果等于 8
                System.out.println("成绩为良"); // 输出成绩为良
                break; // 结束判断
            case 7: // 如果等于 7,则继续执行下一行代码
            case 6: // 如果等于 6
                System.out.println("成绩为中"); // 输出成绩为中
                break; // 结束判断
            case 5: // 如果等于 5,则继续执行下一行代码
            case 4: // 如果等于 4,则继续执行下一行代码
            case 3: // 如果等于 3,则继续执行下一行代码
            case 2: // 如果等于 2,则继续执行下一行代码
            case 1: // 如果等于 1,则继续执行下一行代码
            case 0: // 如果等于 0
                System.out.println("成绩为差"); // 输出成绩为差
                break; // 结束判断
            default: // 如果不符合以上任何一个结果
                System.out.println("成绩无效"); // 输出成绩无效
        }
        sc.close(); // 关闭扫描器
    }
}
运行结果为:

请输入成绩:9
成绩为优

Java switch表达式

switch case语句是用于条件判断、流程控制的组件。从上面的实例中不难看出,switch case 语句的写法显得非常笨拙。为了简化代码,Java 14 提供了一个新特性:switch 表达式。

下面演示如何使用 switch 表达式改写上面的实例,代码如下:
import java.util.Scanner; // 导入 Scanner 类

public class Grade {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 创建扫描器,接收在控制台中输入的内容
        System.out.print("请输入成绩:"); // 输出字符串
        int grade = sc.nextInt(); // 获取在控制台中输入的数字
        String result = switch (grade) {
            case 10, 9 -> "成绩为优"; // 如果等于 10 或 9
            case 8 -> "成绩为良"; // 如果等于 8
            case 7, 6 -> "成绩为中"; // 如果等于 7 或 6
            case 5, 4, 3, 2, 1, 0 -> "成绩为差"; // 如果等于 5, 4, 3, 2, 1 或 0
            default -> "成绩无效"; // 如果不符合以上任何一个结果
        };
        System.out.println(result); // 输出结果
        sc.close(); // 关闭扫描器
    }
}

相关文章