大家都知道switch选择语句被用于数值方面的选择,在如下例子中我们将会介绍关于switch-case语句的穿透性,先上题目:
一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。
按照一般的写法应该是这样的,在每一个case后面加上break以用作结束本次表达式计算。但是我们会发现代码的冗余部分比较多,代码长而且不简洁。
import java.util.Scanner;
public class jj {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int month= sc.nextInt();
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;
}
}
}
这个时候我们会发现在中间比如把case:3的后面的break去掉之后,输入3的时候他的运行会继续往下多运行一次直到遇见了break。也就是说case的执行语句只有在遇到break的时候才会终止运行,在没有遇到break之前会一直往下进行。我们把这种性质叫做switch-case的穿透性。
于是我们就可以利用这种穿透性来简洁代码。如下:
ps:default后面的break也可以去掉因为default本身就具有最后一次运行的意义。
import java.util.Scanner;
public class jj {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int month= sc.nextInt();
switch (month){
case 1:
case 2:
case 3:
System.out.println("春季");break;
case 4:
case 5:
case 6:
System.out.println("夏季");break;
case 7:
case 8:
case 9:
System.out.println("秋季");break;
case 10:
case 11:
case 12:
System.out.println("冬季");break;
default:
System.out.println("你输入的有误");break;
}
}
}