当前位置:首页 > 编程笔记 > 正文
已解决

Java,利用switch的穿透

来自网友在路上 162862提问 提问时间:2023-10-19 23:05:57阅读次数: 62

最佳答案 问答题库628位专家为你答疑解惑

题目:输入2023年的月份和天数,求这一天是2023年的第几天,switch实现。

        在switch语句中,case就是一个入口,表达式与case后面的表达式匹配上后,就进入后面的语句,其他case后面的语句也会进入执行,直到遇到break才停止执行跳出switch语句。

        通常情况下,会在每一个case后的语句中,以break结尾,防止发生穿透,执行其他case后面的语句。

        如果要用if实现以上题目,需要非常多的分支来实现计算,而用switch会方便非常多。

        如果用单纯的case后跟break的方法,month为1的时候,直接输出day。month为二的时候,就是一月份的天数总数加上day,结果应该为31+day。month为3的时候,结果为31+28+day。以此类推,month为12时就是前11个月的天数分别加起来,未免太麻烦了些。

        可以利用case来选择入口,利用switch的穿透性,用累加实现数据的简便性。

        具体代码如图:

class Switch_test
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.println("请输入2023年的月份:");int month = scanner.nextInt();System.out.println("请输入2023年的天:");int day = scanner.nextInt();//创建变量记录天数int sumDays = 0;switch(month)//利用switch的穿透{case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3:sumDays += 28;case 2:sumDays += 31;case 1:sumDays += day;break;}System.out.println("2023年" + month + "月" + day + "日,是这年的第" + sumDays + "天");scanner.close();}
}

比如输入的month为7,就会从case 7:进入,进行前六个月的天数的相加。所以月份的顺序要从上到下依次减小。

比如输入month为7,day为15,结果如图:

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Java,利用switch的穿透":http://eshow365.cn/6-19891-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!