switch语句实现从键盘输入某年某月某日,计算出这一天是这一年中的第几天

  • Post author:
  • Post category:其他

1.先确定年份,月日从键盘中输入,计算这一天是这一年中的第几天。

/*
	从键盘上输入2019年的"mouth" 和 "day",要求通过程序输出输入的日期为2019年的第几天。
*/

import java.util.Scanner;
class SwitchTest3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入2019年n的 mouth ");
		int month = sc.nextInt();
		
		System.out.println("请输入2019年的 day ");
		int day = sc.nextInt();

		// 累加器:输出这一年的多少天
		int sumDays = 0;

		// 方式一
		/*
		if (month == 1){
			sumDays = day;
		}else if (month == 2 ){
			sumDays = 31 + day;
		}else if (month == 3 ){
			sumDays = 31 + 28 + day;
		}else if (month == 4 ){
			sumDays = 31 + 28 + 31 + day;
		}
		*/

		// 方式二
		
		/*switch (month){
		case 1:
			sumDays = day;
			break;
		case 2:
			sumDays = 31 + day;
			break;
		case 3: 
			sumDays = 31 + 28 + day;
			break;
		case 4:
			sumDays = 31 + 28 + 31 + day;
			break;
		case 5:
			sumDays = 31 + 28 + 31 + 30 + day;
			break;
		
		}*/

		// 方式一和方式二代码冗余度很高,继续用switch语句,但是反向推理
		switch (month){
		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;
		}

		System.out.println("2019年" + month + "月" + day + "日,是这一年的第" + sumDays + "天");

	}
}

2.上述代码没有考虑到闰年和平年的情况。

注意:本质问题: 2 月 是 28天 ,还是29天。

import java.util.Scanner;
class SwitchTest3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.println("请输入 year ");
		int year = sc.nextInt();

		System.out.println("请输入2019年n的 mouth ");
		int month = sc.nextInt();
		
		System.out.println("请输入2019年的 day ");
		int day = sc.nextInt();

		// 累加器:输出这一年的多少天
		int sumDays = 0;
		switch (month){
		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;
			// 闰年可以被 4 整除,但是不可以被100整除 || 可以被 400 整除
			if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
				// 说明这一年是闰年
				sumDays += 29;
			}else {
				sumDays += 28;
			}	
		case 2:
			sumDays += 31;
		case 1:
			sumDays += day;
		}

		System.out.println(year + "年" + month + "月" + day + "日,是这一年的第" + sumDays + "天");
	}
}


版权声明:本文为weixin_48893653原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。