switch 贯穿的妙用

Posted 人塞不能怨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了switch 贯穿的妙用相关的知识,希望对你有一定的参考价值。

switch分支结构

switch 和 if 是我们经常要用到的分支结构,两者各有千秋。if 比较适合判断区间范围的情况,而switch非常适合判断特定值或常量的情况。
下面是switch分支的结构

switch(算数表达式)
	case 常量1//代码块1
		break;
	case 常量2//代码块2
		break;
	default:
		//代码块3
		break;

贯穿

我们在使用switch结构时应该非常注意关键字break,他使得程序在匹配到特定值后跳出整个switch代码块,后边的代码便不会执行。如果缺少break,程序会继续向下执行到遇到第一个break为止,我们称该现象为贯穿。贯穿通常时我们应该避免的情况,但在某些情况下如果加以利用会有意想不到的效果。

switch贯穿的使用

假如我们现在要根据特定日期判断该日期是该年第几天。要解决这个问题需要判断该日期所在月之前的所有天数。而月份分大月跟小月跟二月,大月有31天,小月有30天,二月闰年有29天,常年有28天。如果使用if 分支来做需要对每个月进行判断,会比较繁琐,利用switch的贯穿可以极大的简化判断过程。
代码示例

int year = 2021, month = 4, day = 7, total = day;
for(int i = 1; i < month; i++)
switch(month)
   case 1:case 3 :case 5:case 7:case 8:case 10:case 12:
   		total += 31;
   		break;
   case 4:case 6:case 9:case 11:
   		total += 30;
   		break;
   case 2:
   		total += year%4 == 0 && year%100 != 0 || year%400 =0 ? 29 : 28;
   		break;
	

System.out.println(year + "年" + month + "月" + day + "日是该年第" + total + "天");

以上是关于switch 贯穿的妙用的主要内容,如果未能解决你的问题,请参考以下文章

输入年月,判断该月有多少天

JavaScript之switch判断值范围casebreakdefaultSwitch的妙用

计算年月天数

计算年月天数

Java基础-Java控制语句

阳历转换成阴历PHP实现详解