判断一个年月日是当年的第几天

输入年,月,日,判断该日期是当年的第几天。

菜鸟入门版:

import java.util.Scanner;
class SwitchCaseTest {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入年份:");
		int years=scan.nextInt();
		System.out.println("请输入"+years+"年对应的月份:");
		int month1=scan.nextInt();
		while((month1>12)||(month1<1)) {//判断月份是否合法,若不合法,提示重新输入
			System.out.println("输入的月份有误!请重新输入"+years+"年对应的月份:");
			int x=scan.nextInt();
			month1=x;
		}
		
		System.out.println("请输入"+years+"年"+month1+"月对应的日期:");
		int day1=scan.nextInt();
		boolean flag=true;
		
		while(flag) {//根据月份判断输入的日期是否合法
			switch(month1) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				if (day1 >= 1 && day1<=31){
					flag=false;
					break;
				}
			case 4:
			case 6:
			case 9:
			case 11:
				if (day1 >= 1 && day1<=30){
					flag=false;
					break;
				}
			case 2:
				if ((years % 4 == 0 && years % 100 != 0 )|| (years % 400 == 0)){
					if (day1 >=1 && day1 <= 29){
						flag=false;
						break;
					}
				}
				else if(day1 >= 1 && day1 <= 28){
					flag=false;
					break;
				}
			}
			if(flag) {//若输入的日期不合法,则重复提示并允许重新输入
				System.out.println("输入的日期有误!请重新输入"+years+"年"+month1+"月份的日期:");
				int y=scan.nextInt();
				day1=y;	
			}
		}
		
		int sumDays=0;
		switch(month1) {//根据输入计算对应天数
		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:
			if(((years%4 == 0)&&(years % 100 != 0)) || (years % 400 == 0)){
			sumDays+=29;
			}
			else {
				sumDays+=28;
			}
		case 2:
			sumDays+=31;
		case 1:
			sumDays+=day1;
		}
		System.out.println(years+"年"+month1+"月"+day1+"日是"+years+"年的第"+sumDays+"天!");
	}
}

初版。下批版本慢慢完善。

目前可判断月份输入的合法性,

根据所输入的月份,可判断日期输入的合法性。

对于闰年和平年,2月份的天数也做了合法性检测。

年份未做检测。

上一篇:单片机软件常用设计分享(一)驱动设计之按键设计


下一篇:800. 数组元素的目标和(双指针算法)