组团学

流程控制-switch

阅读 (424801)

1、switch语句

在现实业务中,许多场景需要我们从多个固定的值中选出一个,执行该数值对应的操作。

1.1、switch语句的格式

​ switch (表达式){

	case 目标值1:执行语句1;break;

​ case 目标值2:执行语句2;break;

​ ......

​ case 目标值n:执行语句n;break;

​ default:执行语句n+1;break;

​ }

1.2、执行流程

首先计算出表达式的值,其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

1.3、流程图

image20191203184102948.png

在上面的格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。break的作用是跳出switch语句。

1.4、案例

比如,在一周七天,当输入1-7会打印不同的星期。

/*
	需求:键盘输入对应1-7,输出对应的中文日期
	*/
import java.util.Scanner;
public class SwitchDemo01{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入星期对应的数字:");
		int week = sc.nextInt();//2
		switch(week){
			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("程序结束");
	}
}

运行结果:

image20191204104128777.png

1.5、案例优化

/*  
	需求:键盘输入对应1-7
	1-5:输出工作日
	6-7:输出休息日
	*/
import java.util.Scanner;
public class SwitchDemo02{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期对应的数字:");
        int week = sc.nextInt();//2

        switch(week){
            case 1:case 2:case 3:case 4:case 5:
                System.out.println("工作日");break;
            case 6:case 7:System.out.println("休息日");break;
            default:System.out.println("您输入的数字有误!");break;
        }
        System.out.println("程序结束");
    }
}

运行结果:

image20191204104448860.png

1.6、注意事项

(1)switch表示这是switch语句

(2)表达式的取值只能是:byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是String

(3)如同if语句当中的else,default不是必须存在的,与if语句不同,switch语句只能完成具体值的选择,而不能指定取值区间,case后面跟的是要和表达式进行比较的值

(4)语句体部分可以是一条或多条语句

(5)break表示中断,结束的意思,可以结束switch语句,default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

(6)case条件只判断一次,在判断完一次case条件后,所有的case判断语句将不再起作用,而剩余语句正常执行。这是switch语句的穿透。

需要 登录 才可以提问哦