您的位置:

使用switch case语句的Java编程实例

一、switch case语句的基本用法

Java中的switch case语句用于在多个可能的选项中进行选择,其基本的结构如下:

switch (expression) {
    case value1:
        // statements
        break;
    case value2:
        // statements
        break;
    ...
    default:
        // statements
        break;
}

switch后面的(expression)是需要进行匹配的值,而value1,value2是可能的选项值,如果匹配上了选项值,那么就执行相应的语句,如果没有匹配上任何一个选项就会执行default后面的语句。break语句用于退出switch语句,确保只执行匹配选项后的语句。

下面是一个例子,演示使用switch case语句得到当前月份的名称:

import java.util.Scanner;

public class MonthNameDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个月份的数字:");
        int monthNum = sc.nextInt();
        switch (monthNum) {
            case 1:
                System.out.println("一月");
                break;
            case 2:
                System.out.println("二月");
                break;
            case 3:
                System.out.println("三月");
                break;
            case 4:
                System.out.println("四月");
                break;
            case 5:
                System.out.println("五月");
                break;
            case 6:
                System.out.println("六月");
                break;
            case 7:
                System.out.println("七月");
                break;
            case 8:
                System.out.println("八月");
                break;
            case 9:
                System.out.println("九月");
                break;
            case 10:
                System.out.println("十月");
                break;
            case 11:
                System.out.println("十一月");
                break;
            case 12:
                System.out.println("十二月");
                break;
            default:
                System.out.println("输入的月份无效!");
                break;
        }
    }
}

上述代码中,用户需要输入一个1到12之间的数字,然后根据输入的数字使用switch case语句得到相应月份的名称。如果输入的数字不在1到12之间,就输出“输入的月份无效!”。

二、switch case语句的常见应用

1. 字符串匹配

Java SE 7以上版本支持在switch语句中使用字符串,实现字符串的匹配。例如:

public class StringSwitchDemo {
    public static void main(String[] args) {
        String fruit = "orange";
        int price = 0;
        switch (fruit) {
            case "apple":
                price = 10;
                break;
            case "pear":
                price = 8;
                break;
            case "orange":
                price = 6;
                break;
            default:
                price = 0;
                break;
        }
        System.out.println(fruit+"的价格是:"+price);
    }
}

以上代码演示了通过switch case语句,得到不同种类水果的价格。注意,fruit是字符串类型变量。

2. 枚举类型匹配

当我们需要处理的数据都是已知的一组值时,枚举类型会很有用。枚举类型提供了更清晰的语义,使代码更易读,并且可以有效地使用switch语句处理。

下面是一个演示怎样使用switch语句处理枚举类型(Grade)的例子:

public class GradeEnumDemo {
    public static void main(String[] args) {
        Grade grade = Grade.GOOD;
        switch (grade) {
            case EXCELLENT:
                System.out.println("A优秀");
                break;
            case GOOD:
                System.out.println("B良好");
                break;
            case FAIR:
                System.out.println("C及格");
                break;
            case POOR:
                System.out.println("D不及格");
                break;
            default:
                System.out.println("未评定");
                break;
        }
    }
}

enum Grade {
    EXCELLENT, GOOD, FAIR, POOR;
}

上述代码中,枚举类型Grade包括四个值:EXCELLENT, GOOD, FAIR, POOR。根据不同的枚举值,使用switch case语句输出相应的等级。Grade是通过enum定义实现的枚举类型。

三、switch case语句的本质

Java SE规范中定义,switch语句由多个case分支和一个可选的default分支组成。case分支以及default分支本质上都是一个标签(Label)。在Java中,标签可以是任何字符或者字符串,并且以冒号结尾。

在程序执行过程中,当遇到一个标签时,就会执行标签后面的语句。换句话说,switch语句的本质是一个带标签的goto语句。标签放在每个case分支和default分支前面,而跳转语句(类似于goto)由Java编译器自己负责编译产生,这就使得我们的程序看起来更加的优雅,更易于理解。

四、switch case语句的缺点和使用限制

1. switch语句不支持浮点型和布尔型数据类型。

2. switch语句不能使用范围,必须使用固定值,即case中只能使用常量或者final变量。

3. switch语句的缺省分支应该放在最后,而不是中间或者最前面。

4. 如果在程序中需要嵌套很多的switch语句时,容易造成代码难以读懂也容易出错。

5. Java SE 7以上版本支持在switch语句中使用字符串,但是这种方法不如使用if-else语句的效率高。

总结

本文介绍了Java中switch case语句的基础用法和常见应用,比如字符串匹配和枚举类型匹配。同时,也分析了switch case语句的本质以及使用时需要注意的限制。在Java的开发过程中,判断语句是非常必要的,选择switch case语句或者if-else语句要根据实际情况判断,编写优质可维护的代码。