JAVA之switch-case实现一年中的第几天

从键盘输入2022年的月和日,然后打印出这是2022年的第几天
方法一:
也是最容易想到的

import java.util.Scanner;
class SwitchCaseTest{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入2022年的month");
		int mon = scanner.nextInt();
		System.out.println("请输入2022年的day");
		int day = scanner.nextInt();

		int daySum = 0;
		switch(mon){
		case 1:
			daySum = day;
			break;
		case 2:
			daySum = 31 + day;
			break;
		case 3:
			daySum = 31 + 28 + day;
			break;
		case 4:
			daySum = 31 + 28 + 31 + day;
			break;
		case 5:
			daySum = 31 + 28 + 31 + 30 + day;
			break;
		case 6:
			daySum = 31 + 28 + 31 + 30 + 31 + day;
			break;
		case 7:
			daySum = 31 + 28 + 31 + 30 + 31 + 30 + day;
			break;
		case 8:
			daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;
			break;
		case 9:
			daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + day;
			break;
		case 10:
			daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 30 + 30 + day;
			break;
		case 11:
			daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
			break;
		case 12:
			daySum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;
			break;

		}
		System.out.println(2022 + "年" + mon + "月" + day + "日是第" + daySum + "天");

	}
}

但是会发现,会有很多冗余,前面加过的月份会再写一遍,那如何减少这个重复工作呢?
其实,倒过来就可以精巧的实现
方法二:

import java.util.Scanner;
class SwitchCaseTest{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入2022年的month");
		int mon = scanner.nextInt();
		System.out.println("请输入2022年的day");
		int day = scanner.nextInt();
	    
	    int daySum = 0;
		switch(mon){
		case 12:
			daySum += 30;
		case 11:
			daySum += 31;
		case 10:
			daySum += 30;
		case 9:
			daySum += 31;
		case 8:
			daySum += 31;
		case 7:
			daySum += 30;
		case 6:
			daySum += 31;
		case 5:
			daySum += 30;
		case 4:
			daySum += 31;
		case 3:
			daySum += 28;
		case 2:
			daySum += 31;
		case 1:	
			daySum += day;
		}
		System.out.println(2022 + "年" + mon + "月" + day + "日是第" + daySum + "天");
	}
}

小总结
由于switch-case里面break语句是可选的,如果不写break就会执行满足条件的case以及之后的所有语句,这里正好是利用了这个特性,实现了一个累加操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值