控制语句-swich

文章详细介绍了Java中的switch语句的语法结构、执行原理,以及不同JDK版本中switch语句对数据类型的支持。它强调了break语句在控制流程中的作用,case穿透现象,以及如何使用switch处理int、String、byte、short、char类型的数据。此外,还提供了多个编程示例来说明switch在实际编程中的应用,如日期转换、计算器功能和成绩等级判断等。
摘要由CSDN通过智能技术生成
  1. switch语句也属于选择结构,也是分支语句。
  2. 一个比较完整的switch语句应该这样编写:
    switch(int或String类型的字面值或变量){
    case int或String类型的字面值或变量:
    java语句;
    java语句;
    java语句;

    break;
    case int或String类型的字面值或变量:
    java语句;
    java语句;
    java语句;

    break;
    case int或String类型的字面值或变量:
    java语句;
    java语句;
    java语句;

    break;
    case int或String类型的字面值或变量:
    java语句;
    java语句;
    java语句;

    break;

    deflut:
    java语句;

    }
  3. switch语句的执行原理:
    swich后面小括号当中的“数据”和case后面的“数据”进行一一匹配,匹配成功的分支执行。
    按照自上而下的顺序依次匹配。
  4. 匹配成功的分支执行,分支当中最后有“break;”语句的的话,整个switch语句终止。
  5. 匹配成功的分支执行,分支当中没有“break;”语句的话,直接进入到下一个分支执行(不进行匹配),这种现象被称为case穿透现象。【提供break;语句可以避免穿透】
  6. 所有的分支都没有匹配成功,当有default的语句的话,会执行default分支当中的程序。
  7. switch后面和case后面只能是int或者String类型的数据,不能是探测其他类型。
    • 当然byte,short,char也可以直接写到switch和case后面,因为他们可以进行自动类型转换。byte,short,char可以自动类型转换成int类型。
    • JDK6的,switch和case后面只能探测int类型。
    • JDK7之后包括7版本在内,引入新特性,switch关键字和case关键字后面可以探测int或String类型的数据。
  8. case可以合并:
    int i=10;
    switch(i){
    case 1:case 2: case 3:case10:
    System.out.println(“Test Code!”);

代码测试(一)

public class IfTest04 {
    public static void main(String[] args) {
//        long a = 10L;
//        int b=a;//编译报错

//        long x=100L;
//        switch (x){}//编译报错

        //解决编译错误
        long x = 100L;
        switch ((int) x) {
        }

        byte b = 10;
        switch (b) {
        }

        short s = 10;
        switch (s) {
        }

        char c = 'A';
        switch (c) {
        }

        char cc = 97;
        switch (cc) {
        }

        //编译报错
        //swich(true){}

        String username = "zhangsan";
        switch (username) {
        }

        /*
        较完整的switch语句
         */
        //接受用户输入
        //1 表示星期一
        //2 表示星期二
        //...
        //7 表示星期日
        java.util.Scanner scanner = new java.util.Scanner(System.in);
        System.out.print("请输入数字:");
        int num = scanner.nextInt();
        switch (num) {
            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;
            default:
                System.out.println("对不起,您输入的数字非法");
                break;
        }
        System.out.println("============================================");

        //case穿透
        switch (num) {
            case 1:
                System.out.println("星期一");
            case 2:
                System.out.println("星期二");
            case 3:
                System.out.println("星期三");
            case 4:
                System.out.println("星期四");
            case 5:
                System.out.println("星期五");
            case 6:
                System.out.println("星期六");
            case 7:
                System.out.println("星期日");
            default:
                System.out.println("对不起,您输入的数字非法");
        }
        System.out.println("================================================");
        //case合并
        switch (num) {
            case 1:
            case 0:
                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;
            default:
                System.out.println("对不起,您输入的数字非法");
                break;
        }
    }
}

代码测试(二)

import java.util.Scanner;

public class SwitchTest01 {
    /*
    switch确实可以探测String类型,这是Java 7的新特性。
     */
    public static void main(String[] args) {
        java.util.Scanner s = new java.util.Scanner(System.in);

        System.out.print("请输入星期几:");

        String dayOfWeek = s.next();

        switch (dayOfWeek) {
            case "星期一":
                System.out.println(1);
                break;
            case "星期二":
                System.out.println(2);
                break;
            default:
                System.out.println("对不起,您输入的数据非法");
        }
    }
}

代码测试(三)

public class SwitchTest02 {
    public static void main(String[] args) {
        //char c='A';
        //char c='B';
        //char c='C';
        char c = 66;
        //char c = 'D';

        switch (c) {
            case 'A':
                System.out.println("高级");
                break;
            case 'B':
                System.out.println("中级");
                break;
            case 'C':
                System.out.println("初级");
                break;
            default:
                System.out.println("出错了");
        }

        switch (c) {
            case 'A':
                System.out.println("高级");
                break;
            case 66:
                System.out.println("中级");
                break;
            case 'C':
                System.out.println("初级");
                break;
            default:
                System.out.println("出错了");
        }
    }
}

代码测试(四)

public class SwitchTest03 {
    /*
    实现计算器当中的
    +
    -
    *
    /

    实现思路:
        1.选择所有的数据从键盘输入
        2.使用switch语句进行判断
        3.需要从控制台输入三次:
            * 第一个数字
            * 运算符
            * 第二个数字

         最终在控制台上是这样的一个场景:
            欢迎使用简单计算器系统:
            请输入第一个数字:10
            请输入运算符:+
            请输入第二个数字:20
            运算结果:10 + 20 = 30
     */
    public static void main(String[] args) {
        java.util.Scanner s = new java.util.Scanner(System.in);

        System.out.println("欢迎使用简单计算器系统");

        System.out.print("请输入第一个数字:");
        int num1 = s.nextInt();

        System.out.print("请输入运算符:");
        String operator = s.next();

        System.out.print("请输入第二个数字:");
        int num2 = s.nextInt();

        int result = 0;

        switch (operator) {
            case "+":
                result = num1 + num2;
                break;
            case "-":
                result = num1 - num2;
                break;
            case "*":
                result = num1 * num2;
                break;
            case "/":
                result = num1 / num2;
                break;
            case "%":
                result = num1 % num2;
                break;
        }
        
        System.out.println("运算结果为:" + num1 + operator + num2 + "=" + result);
    }
}

代码测试(五)

public class SwitchTest04 {
    /*
     * 假设系统给定考生成绩,请判断考生的成绩等级:
     * 1.有效成绩范围:[0-100]
     * 2.考试成绩可能带小数
     * 3.考试成绩和等级之间的对照关系:
     *   [90-100]    A
     *   [80-90]     B
     *   [70-80]     C
     *   [60-70]     D
     *   [0-60]      E
     * 4.以上需求必须采用switch语句完成,不能使用if。
     * 窍门:(int)(成绩 / 10)
     *   0
     *   1
     *   2
     *   3
     *   4
     *   5
     *   6
     *   7
     *   8
     *   9
     *   10
     * */
    public static void main(String[] args) {
        //考生成绩
        //double score=90.5;
        //double score=100;
        //double score=60.5;
        double score = 59.9;

        //转换成int
        int grade = (int) (score / 10);

        switch (grade){
            case 9: case 10:
                System.out.println("A");
                break;
            case 8:
                System.out.println("B");
                break;
            case 7:
                System.out.println("C");
                break;
            case 6:
                System.out.println("D");
                break;
            default:
                System.out.println("E");
        }
    }
}

资料来源:
【Java零基础教程视频(适合Java 0基础,Java初学入门)】 https://www.bilibili.com/video/BV1Rx411876f/?p=66&share_source=copy_web&vd_source=9bce191eb50f06ae83cb422d8b7f8f31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不背完3500个考研英语词汇不改名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值