选择结构_续(switch语句)

选择结构_续(switch语句)

1、语句格式:
	    switch(表达式){
                case 常量1:
                    语句体1;
                    break;
                case 常量2:
                    语句体;
                    break;
                ...
                case 常量n:
                    语句体n;
                    break;
                default:
                    语句体n+1:
                    break;
            	}
2、格式解释:
   switch表达式的结果可以是哪些数据类型?(面试题)
    表达式的结果可以是:byte,short,int,char,枚举,String(其中一种)
    在JDK1.5以后可以是枚举类型
    在JDK1.7以后可以是String
3、名词解释:
    case: 后面跟的是要和表达式进行比较的值(常量)。如果说匹配到了对应的case的值,那么就执行相对应的语句体,		   而且这个语句的部分可以是一条语句,也可以是多条语句
    break: 表示中断的意思,结束的意思,可以结束switch语句
    default: 表示默认的意思,当表达式的值与所有的case的值都不匹配的时候,最后才执行default中的语句体。				(与if-else if...-else中最后else对应着去理解)
    回顾:常量:①字面值常量(字符串常量) ②整数常量 ③小数常量 ④字符常量 ⑤布尔常量 ⑥空常量
4、执行流程:
    (1)计算表达式的值
    (2)拿着这个计算好的值与case相对应的值(常量)按照顺序从上往下依次进行比较,如果有相同
        的值,就开始执行此位置的case中的语句体内容。
    (3)当语句体的内容执行完毕后,会紧接执行break语句,执行break语句就代表着咱们这个
        switch选择结构的结束(跳出switch选择)
    (4)当第二步从上往下去匹配case的值的时候,如果没有匹配到相应的值,就会执行default
        语句中语句体内容,最后跳出switch语句。
5、注意事项:
     1、case后面的常量值不能有重复的
     2、default语句可以进行省略(一般情况下,不建议省略)
     3、case后面紧跟着的只能是常量,或者常量之间的运算(如:case 3+1:),但是不能是变量
     4、break语句可以省略,代码也不会报错,一般情况下,不建议省略。
        如果你省略了,结果可能不是你想要的结果。当匹配到break语句省略的那个case的时候,首先会执行对应的语句		  体,然后从匹配到的case一直运行到有break语句为止。
     5、default语句可以放在任意地方吗?
        可以,因为我们的switch语句执行流程是严格按照先在所有的case中进行匹配,当所有的case都不匹配的时			候,最后再去执行default语句,这和你default语句写的顺序没有关系。
6、键盘录入的是数字
              例:      买饮料(假设带的钱和饮料价格一样)
                            可乐 3
                            旺仔牛奶 5
                            红牛 6
                    用switch语句实现购物,键盘录入身上带了多少钱。

import java.util.Scanner;                       //第1步:导包
public class SwitchDemo1_1 {
    public static void main(String[] args) {    //创建main方法
        Scanner sc = new Scanner(System.in);    //第2步:创建键盘录入对象
        System.out.println("请问您带着多少钱");    //第3步:键盘录入信息
        int money = sc.nextInt();               //第4步:调用对象中方法,接收键盘录入的信息
												//因为要接收的是数字,所以用int类型	
													
        switch(money){                      //switch后面括号里要和键盘接收录入的信息所定义的												//东西,要保持一致括号,可以放表达式,也可以放一个值
        
            case 3:                             //case 常量后面是冒号,切记
                System.out.println("欢迎购买可乐");
                break;
            case 5:
                System.out.println("欢迎购买旺仔牛奶");
                break;
            case 6:
                System.out.println("欢迎购买红牛");
                break;
            default:                            //最后的default切记别忘了写,而且default语句可													  以放在switch语句中的任意位置
                System.out.println("没有您所需要的饮料");
                break;
        }
    }
}

            执行结果如下:
                        请问您带着多少钱
                        5
                        欢迎购买旺仔牛奶

						Process finished with exit code 0
7、键盘录入的是字符
            例:模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况)

                    数加学院怎么样?

                    A: 非常好   B: 很好    C: 优秀    D: 无与伦比

    import java.util.Scanner;                   	//第1步:导包
    public class SwitchTest1_1 {
        public static void main(String[] args) {    //创建main方法
            Scanner sc = new Scanner(System.in);    //第2步:创建键盘录入对象

            System.out.println("你觉得数加学院怎么样?");  	//第3步:键盘录入信息
            System.out.println("请输入你的选择:");

            String xuanxiang = sc.next();    //第4步:调用对象中的方法,接收键盘录入信息
                                            //因为要接收的是字符(A,B,C,D),所以用String类型,
                                            //用String,同时nextInt要变成next
                                            
            switch(xuanxiang){
                case "A":					//case后面跟字符,要加双引号
                    System.out.println("非常好");
                    break;
                case "B":
                    System.out.println("很好");
                    break;
                case "C":
                    System.out.println("优秀");
                    break;
                case "D":
                    System.out.println("无与伦比");
                    break;
                default:
                    System.out.println("您输入的选项有误");
                    break;
            }
        }
    }

        输出结果为:
                你觉得数加学院怎么样?
                请输入你的选择:
                B
                很好

                Process finished with exit code 0

8、键盘录入的是数字
             例:   用switch语句实现键盘录入月份,输出对应的季节
                            春季:3-5
                            夏季:6-8
                            秋季:9-11
                            冬季:12 - 2

import java.util.Scanner;							//第1步:导包
public class SwitchTest2 {
    public static void main(String[] args) {		//创建main方法
        Scanner sc = new Scanner(System.in);		//第2步:创建键盘录入的对象

        System.out.println("请输入你想知道季节的月份(1-12):"); //第3步:键盘录入信息
        int month = sc.nextInt();						//第4步:接收键盘录入的信息

                switch (month){
                    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;
                    case 8:
                        System.out.println("夏季");
                        break;
                    case 9:
                        System.out.println("秋季");
                        break;
                    case 10:
                        System.out.println("秋季");
                        break;
                    case 11:
                        System.out.println("秋季");
                        break;
                    case 12:
                        System.out.println("冬季");
                        break;
                    default:
                        System.out.println("您输入的月份有误");
                        break;
                }

            }
        }
9、当没有键盘录入,看程序写结果

        public class SwitchTest3 {
            public static void main(String[] args) {
                int x = 2;
                int y = 3;
                switch (x) {
                    default:				//第3步:y++,所以最终输出y的值为4
                    						//(虽然deault写在第一个,但是也是最后才执行)
                        y++;  
                        break;
                    case 3:					//第1步:因为x等于2,3和2不匹配,不执行
                        y++;
                    case 4:					//第2步:因为x等于2,4和2不匹配,不执行
                        y++;
                }
                System.out.println("y=" + y);

            }
        }

二、if语句和switch语句各自使用场景

if条件语句:
		①针对结果是boolean类型的判断

		②针对一个范围的判断

		③针对几个常量值的判断

switch语句:
		①针对几个常量值的判断

		②开发中优先选择if语句格式,再根据实际需求来选择switch

三、if语句和switch语句的嵌套

switch语句与if语句嵌套使用
			例:最少带了两块钱,而且小于100
			可乐 3, 旺仔牛奶 5, 红牛 6, 农夫山泉 2, 脉动 4
			
import java.util.Scanner;						//第1步:导包
public class SwitchIfDemo1 {
    public static void main(String[] args) {	//创建main方法
        Scanner sc = new Scanner(System.in);	//第2步:创建键盘录入对象
        
        System.out.println("请输入您身上带了多少钱:");	//第3步:键盘录入信息
        int money = sc.nextInt();					//第4步:接收键盘录入的信息

        if(money>=2 & money<100){				
            System.out.println("欢迎光临!!!");
												//嵌套的时候,是将switch语句套在if语句里面
            switch (money){
                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;
                default:
                    System.out.println("没有你想要的饮料");
                    break;
            }
        }else if(0<money & money<2){
            System.out.println("您带的钱太少了,下次带多一点");
        }else if(money >=100){
            System.out.println("随便挑");
        }else {
            System.out.println("你是个穷鬼,下次再来吧");
        }

    }
}
posted @ 2021-11-26 21:56  阿伟宝座  阅读(404)  评论(1)    收藏  举报