Java学习教程,从入门到精通,Java switch语句语法知识点(14)

1、Java switch 语句语法知识点

Java 中的 switch 语句是一种多分支选择结构,它允许一个变量(或表达式)与多个可能的常量值进行比较,并根据匹配的结果执行相应的代码块。以下是 switch 语句的关键语法点:

  1. 基本结构

    java 复制代码
    switch (expression) {
        case value1:
            // 当 expression 等于 value1 时执行的代码
            break; // 可选,但通常建议加上以避免"贯穿"(fall-through)
        case value2:
            // 当 expression 等于 value2 时执行的代码
            break;
        // 可以有任意数量的 case 语句
        default:
            // 当 expression 不匹配任何 case 时执行的代码
            break; // 可选,但如果是最后一个语句则通常省略
    }
  2. 表达式类型

    • 在 Java 7 及更早版本中,switch 语句中的表达式必须是 charbyteshortintCharacterByteShortIntegerString 或枚举类型。
    • 从 Java SE 7 开始,switch 语句支持 String 类型。
    • 从 Java 12 开始,引入了增强的 switch 表达式(预览特性,后在 Java 14 中成为正式特性),允许返回值,并且可以使用 yield 关键字代替 break
  3. 贯穿(fall-through)

    • 如果一个 case 块没有 break 语句,那么程序将继续执行下一个 case 块(如果有的话),直到遇到 breakswitch 语句的末尾。
    • 这通常是不期望的行为,因此建议每个 case 块都以 break 结尾(除非你有意利用贯穿特性)。
  4. default 语句

    • default 语句是可选的,但它提供了一种处理所有不匹配 case 的情况的方法。
    • default 语句可以放在 switch 语句中的任何位置,但通常放在最后。

具体案例

以下是一个使用 Java switch 语句的示例,它根据用户输入的字符输出相应的消息:

java 复制代码
import java.util.Scanner;

public class SwitchExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入一个字符(A, B, C 或其他):");
        char inputChar = scanner.next().charAt(0); // 读取用户输入的第一个字符

        switch (inputChar) {
            case 'A':
                System.out.println("你输入了 A");
                break;
            case 'B':
                System.out.println("你输入了 B");
                break;
            case 'C':
                System.out.println("你输入了 C");
                break;
            default:
                System.out.println("你输入的不是 A、B 或 C");
                break;
        }

        scanner.close();
    }
}

在这个例子中,程序首先提示用户输入一个字符,然后使用 switch 语句根据输入的字符执行相应的代码块。如果用户输入的是 'A'、'B' 或 'C',程序将输出相应的消息。如果用户输入的是其他字符,程序将执行 default 代码块并输出一条不同的消息。

当然可以,以下是一些使用 Java switch 语句的具体案例:

案例一:判断星期几

java 复制代码
public class WeekdayExample {
    public static void main(String[] args) {
        int day = 3; // 假设今天是星期三
        String dayName;

        switch (day) {
            case 1:
                dayName = "Monday";
                break;
            case 2:
                dayName = "Tuesday";
                break;
            case 3:
                dayName = "Wednesday";
                break;
            case 4:
                dayName = "Thursday";
                break;
            case 5:
                dayName = "Friday";
                break;
            case 6:
                dayName = "Saturday";
                break;
            case 7:
                dayName = "Sunday";
                break;
            default:
                dayName = "Invalid day";
                break;
        }

        System.out.println("Today is: " + dayName);
    }
}

在这个例子中,switch 语句根据变量 day 的值选择相应的 case 分支,并输出对应的星期几。

案例二:计算工资扣税

java 复制代码
import java.util.Scanner;

public class TaxCalculation {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入工资(元):");
        double salary = scanner.nextDouble();

        double tax = 0;

        switch ((int) (salary / 1000)) { // 根据工资范围计算扣税比例
            case 0:
            case 1:
            case 2:
            case 3: // 工资3500及以下,扣税0
                tax = 0;
                break;
            case 4: // 工资3501-5000之间,扣税0.1%的超出部分
                tax = (salary - 3500) * 0.001;
                break;
            case 5: // 工资5001-8000之间,前3500不扣税,3501-5000扣0.1%,5001-8000扣0.2%
                tax = (5000 - 3500) * 0.001 + (salary - 5000) * 0.002;
                break;
            case 6: // 工资8001-10000之间,类似计算
                tax = (5000 - 3500) * 0.001 + (8000 - 5000) * 0.002 + (salary - 8000) * 0.003;
                break;
            default: // 工资10000以上
                tax = (5000 - 3500) * 0.001 + (8000 - 5000) * 0.002 + (10000 - 8000) * 0.003 + (salary - 10000) * 0.004;
                break;
        }

        System.out.printf("应扣税额为:%.2f元\n", tax);
        scanner.close();
    }
}

注意 :这个例子中的扣税计算是简化的,实际扣税规则可能更复杂。此外,由于 switch 语句不支持浮点数,这里使用了整数除法将工资范围划分到不同的区间。

案例三:根据用户输入执行不同操作

java 复制代码
import java.util.Scanner;

public class OperationSelector {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入操作选项(1: 加法,2: 减法,3: 乘法,4: 除法):");
        int option = scanner.nextInt();

        double num1, num2, result;

        System.out.print("请输入第一个数字:");
        num1 = scanner.nextDouble();

        System.out.print("请输入第二个数字:");
        num2 = scanner.nextDouble();

        switch (option) {
            case 1:
                result = num1 + num2;
                System.out.printf("结果是:%.2f\n", result);
                break;
            case 2:
                result = num1 - num2;
                System.out.printf("结果是:%.2f\n", result);
                break;
            case 3:
                result = num1 * num2;
                System.out.printf("结果是:%.2f\n", result);
                break;
            case 4:
                if (num2 != 0) {
                    result = num1 / num2;
                    System.out.printf("结果是:%.2f\n", result);
                } else {
                    System.out.println("除数不能为零!");
                }
                break;
            default:
                System.out.println("无效的操作选项!");
                break;
        }

        scanner.close();
    }
}

在这个例子中,switch 语句根据用户输入的操作选项执行相应的数学运算,并输出结果。

这些案例展示了 switch 语句在 Java 中的多种用途,包括根据变量的值选择执行不同的代码块、计算不同的结果以及根据用户输入执行不同的操作。

相关推荐
2601_949809591 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
猷咪23 分钟前
C++基础
开发语言·c++
IT·小灰灰24 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧26 分钟前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q27 分钟前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳027 分钟前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾27 分钟前
php 对接deepseek
android·开发语言·php
vx_BS8133031 分钟前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_9498683631 分钟前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
gzxx2007sddx37 分钟前
windows vnpy运行过程及问题记录
python·量化·vnpy