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 + "天");

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值