java中输入一个年份月份日期,得到这天是该年的第多少天

该程序通过手动键入年份–月份–日期判断这天是该年的第多少天

//判断某个日期是当年的第多少天
import java.util.Scanner;

class DateExer{
	
	public static void main(String[] args){
		
		Scanner s = new Scanner(System.in);
		//手动键入一个年份
		System.out.println("请输入一个年份");
		int year = s.nextInt();
		//为键入的年份添加限制条件,必须是正整数
		while(year < 0){
			System.out.println("请输入一个有效的年份");
			year = s.nextInt();
		}
		//手动键入一个月份
		System.out.println("请输入一个月份");
		int month = s.nextInt();
		//为键入的月份添加限制条件,只能输入1-12之间的数字
		while(month > 12 || month <= 0){
			System.out.println("请输入一个正确的月份");
			month = s.nextInt();
		}
		//手动键入一个日期
		System.out.println("请输入一个日期");
		int day = s.nextInt();
		//判断输入的月份是否为大月
		if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
			//大月的天数不超过31天,添加限制条件
			while(day <= 0 || day > 31){
				System.out.println("该月是大月,请输入一个1-31的日期");
				day = s.nextInt();
			}
		} else if (month == 4 || month == 6 || month == 9 || month == 11){//判断输入的月份是小月
			//小月的天数不超过30天,添加限制条件
			while(day <= 0 || day > 30){
				System.out.println("该月是小月,请输入一个1-30的日期");
				day = s.nextInt();
			}
		} else {//只剩下2月,为2月添加限制条件
			if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
				while (day <= 0 || day >=30){//闰年二月不超过29天
					System.out.println("这一年是闰年,请输入1-29之间的日期");
					day = s.nextInt();
				}
			} else {
				while (day <= 0 || day >= 29){//平年二月不超过28天
					System.out.println("这一年是平年,请输入1-28之间的日期");
					day = s.nextInt();
				}
			}
		}
		System.out.println("您要查询的是:" + year + "年" + month + "月" + day + "日");
		int sum = 0;
		switch(month){
			case 12 :sum += 30;
			case 11 :sum += 31;
			case 10 :sum += 30;
			case 9 :sum += 31;
			case 8 :sum += 31;
			case 7 :sum += 30;
			case 6 :sum += 31;
			case 5 :sum += 30;
			case 4 :sum += 31;
			case 3 :
				if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
					sum += 29;
				}else {
					sum += 28;
				}
			case 2 :sum += 31;
			case 1 :sum += 0;
		}
		sum += day;
		System.out.println("这天是该年的第" + sum + "天");
	}
	
	
}

程序较为繁琐,更多的是添加限制条件,学习可以请勿盗用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值