位置:电子教程 > Java基础语法 (如果看不到内容请使用360浏览器) 推荐学习资源
开发准备
Java 程序基础
Java 运算符
Java流程控制语句
当前阅读教程:Java基础语法 > switch 语句格式
阅读(22555525)      收藏       赞(5685)      分享
上一篇: Java switch case语句 下一篇: 嵌套 switch 语句

switch 语句格式

switch 语句是 Java 的多路分支语句。它提供了一种基于一个表达式的值来使程序执行不同部分的简单方法。因此,它提供了一个比一系列 if-else-if 语句更好的选择。

switch 语句的基本语法形式如下所示:

switch(表达式) {

    case 1:

        语句块1;

        break;

    case 2:

        语句块2;

        break;

    …

    case n:

        语句块n;

        break;

    default:

        语句块n+1;

    break;

}

其中,switchcasedefaultbreak 都是 Java 的关键字。

switch

表示“开关”,这个开关就是 switch 关键字后面小括号里的值,小括号里要放一个整型变量或字符型变量。表达式必须为 byteshortintchar类型。

Java7 增强了 switch 语句的功能,允许 switch 语句的控制表达式是 java.lang.String 类型的变量或表达式。只能是 java.lang.String 类型,不能是 StringBuffer StringBuilder 这两种字符串的类型。

case

表示“情况,情形”,case 标签可以是:

Ø  类型为 charbyte short int 的常量表达式。

Ø  枚举常量。

Ø  Java SE 7 开始, case 标签还可以是字符串字面量。

例如:

String input = ...;

switch (input.toLowerCase()) {  // toLowerCase用于将大写字符转换为小写

    case "yes":

        ...

        break;

}

当在 switch 语句中使用枚举常量时,不必在每个标签中指明枚举名,可以由 switch 的表达式值确定。例如:

Size sz = ...;

switch (sz) {

    case SMALL: // no need to use Size.SMALL

        ...

        break;

    ...

}

n  注意:重复的 case 值是不允许的。

default

表示“默认”,即其他情况都不满足。default 后要紧跟冒号,default 块和 case 块的先后顺序可以变动,不会影响程序执行结果。通常,default 块放在末尾,也可以省略不写。

break

表示“停止”,即跳出当前结构。

 

如果在 case 分支语句的末尾没有 break 语句,有可能触发多个 case 分支。那么就会接着执行下一个 case 分支语句。这种情况相当危险,常常会引发错误。为此,我们在程序中从不使用 switch 语句。

如果你喜欢 switch 语句,编译代码时可以考虑加上 -Xlint:fallthrough 选项,如下所示:

javac -Xlint:fallthrough Test.java

这样一来,如果某个分支最后缺少一个 break 语句,编译器就会给出一个警告消息。

switch 语句的执行过程如下:表达式的值与每个 case 语句中的常量作比较。如果发现了一个与之相匹配的,则执行该 case 语句后的代码。如果没有一个 case 常量与表达式的值相匹配,则执行 default 语句。当然,default 语句是可选的。如果没有相匹配的 case 语句,也没有 default 语句,则什么也不执行。

image.png

示例

小白教程网www.2d5.net

在节目的抽奖环节里,节目组会根据每位嘉宾的座位号来进行抽奖游戏,根据不同的号码来决定奖项的大小。使用 switch 语句编写 Java 程序来完成奖项分配,其实现代码如下。

import java.util.Scanner;
public class YujuSwitch {
    public static void main(String[] args) {
        System.out.println("请输入座位号码:");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        switch (num) {
            case 8:
                System.out.println("恭喜你,获得了三等奖!");
                break;
            case 88:
                System.out.println("恭喜你,获得了二等奖!");
                break;
            case 888:
                System.out.println("恭喜你,获得了一等奖!");
                break;
            default:
                System.out.println("谢谢参与!");
                break;
        }
    }
}

当用户输入的号码为 888 时,获取的 num 值为 888,则与第三个 case 后的值匹配,执行它后面的语句,输出“恭喜你,获得了一等奖!”,然后执行 break 语句,跳出整个 switch 结构。如果输入的号码与 case 中的值都不匹配,则执行 default 后的语句。

程序执行结果如下所示:

请输入座位号码:

888

恭喜你,获得了一等奖!

 

请输入座位号码:

88

恭喜你,获得了二等奖!

 

请输入座位号码:

66

谢谢参与!

 

示例

小白教程网www.2d5.net

编写一个 Java 程序,根据当前的星期数字输出对应的汉字。在这里使用包含 break switch 语句来判断当前的星期,实现代码如下:

import java.util.*;
public class YujuSwitch02 {
    public static void main(String[] args) {
        String weekDate = "";
        Calendar calendar = Calendar.getInstance();  // 获取当前时间
       
int week = calendar.get(Calendar.DAY_OF_WEEK) - 1; //获取星期的第几日
       
switch (week) {
            case 0:
                weekDate = "星期日";
                break;
            case 1:
                weekDate = "星期一";
                break;
            case 2:
                weekDate = "星期二";
                break;
            case 3:
                weekDate = "星期三";
                break;
            case 4:
                weekDate = "星期四";
                break;
            case 5:
                weekDate = "星期五";
                break;
            case 6:
                weekDate = "星期六";
                break;
        }
        System.out.println("今天是 " + weekDate);
    }
}

 

本程序首先获取当前的星期值,然后使用 switch 语句判断 week 的值:0 表示星期日,1 表示星期一,2 表示星期二……以此类推,6 表示星期六。只要 week 值与 case 值相符合,则程序将执行该 case 中的语句,并跳出 switch 语句。

运行程序,输出的结果如下:

今天是 星期日


上一篇: Java switch case语句 下一篇: 嵌套 switch 语句
计算机毕业设计作品网      毕业设计文档网      小程序教程网       毕业设计资料网  |         毕业设计定制QQ:45157718(微信同号)(备注:毕设)