【java基础09 控制语句:SWITCH】

switch语句

  1. switch语句也属于选择结构,也是分支语句

  2. switch语句的语法结构:

    一个比较完整的switch语句应该这样编写:

    public class SwitchText01 {
        public static void main(String[] args){
            switch(int或String类型的字面值或变量){
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                case int或String类型的字面值或变量:
                    java语句;
                    ...
                    break;
                ...
                default :
                    java语句;
                    ...
            }
                
       }
    }
    
  3. switch语句的执行原理

    switch后面的小括号中的“数据”与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类型
        /*
          long a= 10L;
          int b= a;//编译报错,应该加强制类型转换符
       */
    
        /*
           long x=100L;
           switch(x){}      //编译报错,long类型无法自动转换为int类型
        */
    
        //解决编译错误
        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){}
    
        //编译报错  类型不兼容
        //switch(true){}
    
        String username="lisi";
        switch(username){}
    
  8. case可以合并

    int i= 10;
    switch(i){
        case 1: case 2: case 3: case 10://i=1或2或3或10,以下语句都会执行
    	System.out.println("Text Code");
    }
    
  9. 教完整的switch语句,csae穿透、合并实例

    /*
       较完整的switch语句
       需求:
           接收用户输入:
               1表示星期一
               2表示星期二
               。。。
               7表示星期日
    */
    public class SwitchText01 {
        public static void main(String[] args){
            java.util.Scanner s=new java.util.Scanner(System.in);
    
            System.out.print("请输入数字:");
            int num=s.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("您输入的数字有误,请重新输入");
            }
    
            System.out.println("------------------------------------------------");
            //case穿透
            // 如果某句case后面没跟break语句,那么满足这个条件后,会一直执行到碰见break或者switch语句结束
            //只有当满足某个条件时,才会从这个条件开始一直执行下去
            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("您输入的数字有误,请重新输入");
            }
    
        }
    }    
    
  10. String类型

    public class SwitchText02 {
        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;
                case "星期日":
                    System.out.println("7");
                    break;
                default :
                    System.out.println("您输入的数据有误");
            }
    
        }
    }
    
  11. char的switch语句

    public class SwitchText02 {
        public static void main(String[] args){
    //        char c= 'A';  //高级
    //        char c= 'B';  //中级
    //        char c= 'C';  //低级
    //        char c= 65;   //高级
    //        char c= 'D';  //出错了
            char c= 66;//中级
            switch(c){
                case 'A' :
                    System.out.println("高级");
                    break;
                case 'B' :
                    System.out.println("中级");
                    break;
                case 'C' :
                    System.out.println("低级");
                    break;
                default :
                    System.out.println("出错了");
            }
    
            //char的另一种显示方式
            c=67;//低级
            switch(c){
                case 'A' :
                    System.out.println("高级");
                    break;
                case 'B' :
                    System.out.println("中级");
                    break;
                case 'C' :
                    System.out.println("低级");
                    break;
                default :
                    System.out.println("出错了");
            }
    
    	}
    }
    
  12. 需求:用switch写一个简单计算器

    public class SwitchText03 {
        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 symbol=s.next();
    
            System.out.print("请输入第二个数字:");
            int num2= s.nextInt();
    
            int result=0;//因为要接收用户键盘输入,但编译只检查语法,以下输出语句有用到result,所以要给它一个值
    
            switch(symbol){
                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+symbol+num2+"="+result);
    
        }
    }
    
    
  13. 需求:
    假设系统给定;一个考生的成绩,成绩可能带有小数点,学生成绩范围在[0-100]
    根据学生的成绩判断该学生的成绩等级,成绩可能带有小数
    [90-100]A
    [80-90) B
    [70-80) C
    [60-70) D
    [0-60) E

    以上的逻辑判断采用switch语句完成,不考虑[0,100]以外的

    public class SwitchText04 {
        public static void main(String[] args){
            java.util.Scanner s=new java.util.Scanner(System.in);
    
            System.out.print("请输入考生成绩:");
            double grade=s.nextDouble();
    
            switch((int)(grade/10)) {
                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");
            }
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值