switch分支结构

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

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

贯穿

我们在使用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 贯穿的妙用相关推荐

  1. JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)...

    一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...

  2. js的for循环中return可以跳出循环,而使用forEach等不可以跳出循环

    描述 在vue项目中做表格增加行的时候,校验行内单元格某些字段的必填项,刚开始使用forEach进行循环遍历数组对象,然后判断对象的键值是否为空,为空则跳出循环,提示需要填写必填项,否则提示进行增加行 ...

  3. 我所了解的JavaScript糟粕和鸡肋

    糟粕 全局变量 众所周知,全局变量在很小的程序中可能会带来方便,但随着程序变得越来大,全局变量将难以处理,全局变量将降低程序的可靠性. 在js中有3种方式定义全局变量 脱离任何函数安排一个var语句  ...

  4. switch()语句中,default,break关键字作用,以及贯穿问题

    switch()语句中,default,break关键字作用,以及贯穿问题 1.default代表switch()中没有此类情况 2没有break,语句会一直穿到底部

  5. php中的switch判断妙用

    为什么说妙用,因为很多人只知道定值判断,其实switch可以区间判断,而且还是每次只判断一个,所以写switch条件的时候,从小写到大,他取出来的符合条件的是第一个区间,看下面例子就明白了. < ...

  6. 妙用switch 计算几天是 一年的第几天

    import java.util.Scanner; public class Demo{public static void main(String[] args){Scanner input = n ...

  7. js 与或运算符 || 妙用

    js 与或运算符 || && 妙用,可用于精简代码,降低程序的可读性. 首先出个题: 如图:  假设对成长速度显示规定如下:  成长速度为5显示1个箭头:  成长速度为10显示2个箭头 ...

  8. 控制语句 for while if switch

    一.for-in 结构 for i in 0...4{ print(i)    //使用到了变量 i } for _ in 0...1{  // 后期没有使用到变量,可以直接用个下划线 _  占位就行 ...

  9. 快速提升UI设计感的7个版式小妙招

    看了很多关于UI设计版式技巧仍排不好版?懂得很多套路仍做不好UI设计?其实也正常,因为大部分技巧都比较笼统,每个人用起来也会有不同的效果,所以合肥学码思小编特地总结了7个比较具体的小技巧,算是属于一学 ...

  10. 在任天堂Switch上倒贴30块钱“加班”,我一个程序员还觉得很刺激

    茕茕 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大家好,我是量子位的半吊子程序媛. 在这个周末,我决心远离代码,拿起我的Switch,沉迷倒卖大头菜. 突然间福至心灵:不如顺便看一下esh ...

最新文章

  1. 手动代码约束,等比例
  2. 阿里巴巴计算机视觉领域最强阵容集结完毕团体参加CVPR会议
  3. 一 手游开发工具cocos2d-x editor初识
  4. jsp九大内置对象与servlet中java对象
  5. Jmeter工作原理
  6. vue-cli学习入门_byKL
  7. python利用pygame框架实现类似推箱子游戏 Star Pusher
  8. 硬核图书系列:《Spring Boot编程思想(核心篇)》
  9. JS调用OCX控件过程
  10. java制作报表统计_统计报表制作,怎样做报表统计
  11. NVIDIA针对大规模数据分析和机器学习推出RAPIDS开源GPU加速平台!
  12. php 屏蔽deprecated,php7.2.8 Deprecated错误不能隐藏处理
  13. vscode Couldn‘t start client Rust Language Server
  14. 未来的世界:方向比努力重要,能力比知识重要,健康比成绩重要,生活比文凭重要,情商比智商重要!
  15. 如何创建一个Hidl Service?
  16. BT种子文件格式[ ]
  17. 【技术科普】VR、AR、MR的区别
  18. windows更改密码脚本_如何更改您的Windows密码
  19. 海明码java编程,海明码校验程序设计
  20. 如何混迹程序猿江湖,你得懂程序员黑话暗语!

热门文章

  1. 别人眼中的程序猿和现实中的程序猿差别在哪?
  2. MD5 JS实现加密
  3. 利普希茨连续(Lipschitz continuity)和利普希茨常数(Lipschitz constant)
  4. 软件测试自学网站推荐_四大适合年轻人自学的网站!知乎超100万人推荐,自学改变人生...
  5. 人大金仓删除字段_人大金仓kingbaseV7常用命令
  6. 基于照片标记的广州市旅游流特征简单分析(上)
  7. Gmail手机客户端软件
  8. DAY7:尚学堂高琪JAVA(66~69)
  9. SRM 405(1-250pt, 1-500pt)
  10. C++ 笔记 加号运算符重载