Java之switch分支结构基本使用

简介: Java之switch分支结构基本使用

switch 分支结构

1. 基本语法

在这里插入图片描述

2. 流程图

1) 画出 swtich 出流程
2) 案例说明流程图
在这里插入图片描述

3. 快速入门

  • 案例:Switch01.java

请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a 表示星期一,b 表示星期二 …
根据用户的输入显示相应的信息.要求使用 switch 语句完成
代码:

    /*
    案例:Switch01.java
    请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g  
    a表示星期一,b表示星期二 …  
    根据用户的输入显示相应的信息.要求使用 switch 语句完成
    
    思路分析
    1. 接收一个字符 , 创建Scanner对象
    2. 使用switch 来完成匹配,并输出对应信息
    代码
    
     */
    Scanner myScanner = new Scanner(System.in);
    System.out.println("请输入一个字符(a-g)");
    char c1 = myScanner.next().charAt(0);//
    //在java中,只要是有值返回,就是一个表达式
    switch(c1) {
        case 'a' : 
            System.out.println("今天星期一,猴子穿新衣");
            break;
        case 'b' : 
            System.out.println("今天星期二,猴子当小二");
            break;
        case 'c' : 
            System.out.println("今天星期三,猴子爬雪山..");
            break;
        //.....
        default:
            System.out.println("你输入的字符不正确,没有匹配的");
    
    }
    
    System.out.println("退出了switch ,继续执行程序");

在这里插入图片描述

4. switch 注意事项和细节讨论

在这里插入图片描述

    //细节1
    //表达式数据类型,应和case 后的常量类型一致,
    //或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是 int
    
    //细节2
    //switch(表达式)中表达式的返回值必须是:
    //(byte,short,int,char,enum[枚举],String)

    //细节3
    //case子句中的值必须是常量(1,'a')或者是常量表达式,而不能是变量
    //
    //细节4
    //default子句是可选的,当没有匹配的case时,执行default
    //如果没有default 子句,有没有匹配任何常量,则没有输出
    //
    //细节5
    //break语句用来在执行完一个case分支后使程序跳出switch语句块;
    //如果没有写break,程序会顺序执行到switch结尾,除非执行到break
    char c = 'b';
    char c2 = 'c';
    switch(c) {
        case 'a' :
            System.out.println("ok1");
            break;
        case 'b'  :
            System.out.println("ok2");
            break;
        default :
            System.out.println("ok3");
    }

    System.out.println("退出了switch,继续执行..");

在这里插入图片描述

  • 把上面的case b中的 break 都去掉,会都执行下面输出语句,不会跳出来。

在这里插入图片描述

5. switch 课堂练习

SwitchExercise.java
1) 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 "other"。

    //使用 switch 把小写类型的 
    //char型转为大写(键盘输入)。只转换 a->A, b->B, c, d, e. 
    //其它的输出 "other"。
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入a-e");
    char c1 = sc.next().charAt(0);
    switch(c1) {
        case 'a' :
            System.out.println("A");
            break;
        case 'b' :
            System.out.println("B");
            break;
        case 'c' :
            System.out.println("C");
            break;
        case 'd' :
            System.out.println("D");
            break;
        case 'e' :
            System.out.println("E");
            break;
        default :
            System.out.println("你的输入有误~");
    
    }

在这里插入图片描述

2) 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100), 提示: 成绩/60

    //对学生成绩大于60分的,输出"合格"。低于60分的,
    //输出"不合格"。(注:输入的成绩不能大于100), 提示 成绩/60
    //思路分析
    //1. 这道题,可以使用 分支来完成, 但是要求使用switch
    //2. 这里我们需要进行一个转换, 编程思路 : 
    //   如果成绩在 [60,100] , (int)(成绩/60) = 1 
    //   如果成绩在 [0,60) , (int)(成绩/60) = 0 
    
    //代码实现
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入成绩在0-100之间:");
    double score = sc.nextDouble();
    if (score >= 0 && score<=100) {
        switch ((int) (score / 60)) {
            case 0:
                System.out.println("不合格");
                break;
            case 1:
                System.out.println("合格");
        }
    }else{
        System.out.println("请输入成绩在0-100之间");
    }

在这里插入图片描述

3) 根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示: 使用穿透 ]

    //根据用于指定月份,
    //打印该月份所属的季节。
    //3,4,5 春季 6,7,8 夏季  9,10,11 秋季 12, 1, 2 冬季 
    //[课堂练习, 提示 使用穿透 ] 
    //
    //思路分析
    //1. 创建Scanner对象, 接收用户输入
    //2. 使用 int month 接收
    //3. 使用switch 来匹配 ,使用穿透来完成,比较简洁
    
    Scanner myScanner = new Scanner(System.in);
    System.out.println("输入月份");
    int month = myScanner.nextInt();
    switch(month) {
        case 3:
        case 4:
        case 5: 
            System.out.println("这是春季");
            break;
        case 6:
        case 7:
        case 8: 
            System.out.println("这是夏季");
            break;
        case 9:
        case 10:
        case 11: 
            System.out.println("这是秋季");
            break;
        case 1:
        case 2:
        case 12: 
            System.out.println("这是冬季");
            break;
        default :
            System.out.println("你输入的月份不对(1-12)");
    }

在这里插入图片描述

6. switch 和 if 的比较

1) 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可以使用,建议使用 swtich 语句。
2) 其他情况:对区间判断,对结果为 boolean 类型判断,使用 ifif 的使用范围更广。

目录
相关文章
|
10天前
|
Java
java基础(1)逻辑控制if、switch
本文继续介绍了Java中的基础逻辑控制语句,包括if-else语句和switch语句。文章通过示例代码展示了if-else语句如何根据条件判断执行不同的代码块,以及switch语句如何根据变量的值执行不同的case分支。还提供了一个使用Scanner类从键盘获取输入,并根据输入的数字输出对应的星期日的示例。最后提到了如何在IDEA中格式化代码。
12 2
|
21天前
|
安全 Java
Java switch case隐藏用法
在 Java 中,`switch` 语句是一种多分支选择结构,常用于根据变量值执行不同代码块。除基本用法外,它还有多种进阶技巧,如使用字符串(Java 7 开始支持)、多个 `case` 共享代码块、不使用 `break` 实现 “fall-through”、使用枚举类型、使用表达式(Java 12 及以上)、组合条件以及使用标签等。这些技巧使代码更加简洁、清晰且高效。
|
2月前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
|
2月前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
2月前
|
前端开发 Java 应用服务中间件
Java应用结构规范问题之dal层实现对数据源的操作的问题如何解决
Java应用结构规范问题之dal层实现对数据源的操作的问题如何解决
|
2月前
|
Java C++ 开发者
if-else VS switch:谁才是Java条件判断的王者?
if-else VS switch:谁才是Java条件判断的王者?
34 3
下一篇
无影云桌面