输入年、月、日输出该年份的第多少天,已对闰年进行校验,代码如下
package com.guigu.ersi.study;
import java.util.Scanner;
/**
* @author xmh
* @Description
* @create 2024-01-07-20:51
*/
public class getDays {
public static void main(String[] args) {
int year, month, day, days = 0;
boolean isLeapMonth = false;
// 生成一个scanner对象
Scanner scann = new Scanner(System.in);
// 获取年份
System.out.println("请您输入年份(1900~2100):");
year = scann.nextInt();
// 判断输入年份的合法性
if (year < 1900 || year > 2100) {
System.out.println("对不起,您输入的年份不合法:即将退出程序......");
System.exit(0);
}
// 判断输入的年份是闰年还是平年 运算规则:闰年是能被4整除 能被400整除,但是不能被100整除的正数
if (year % 400 == 0 || year % 4 == 0) {
if (year % 100 != 0) {
isLeapMonth = true;
}
}
// 获取月份
System.out.println("请您输入要查询的月份(1~12):");
month = scann.nextInt();
// 判断输入的月份的合法性
if (month < 1 || month > 12) {
System.out.println("对不起,您输入的月份不合法:即将退出程序......");
System.exit(0);
}
// 获取日
System.out.println("请您输入要查询的该月份的第几日:(1~31)");
day = scann.nextInt();
// 判断输入的日子的合法性
if (day < 1 || day > 31) {
System.out.println("对不起,您输入的该月的日子不合法:程序即将退出......");
System.exit(0);
}
switch (month) {
case 4:
case 6:
case 9:
case 11:
if (day == 31) {
System.out.println("对不起,您输入的月份:" + month + "月,不含31日\n程序即将退出......");
System.exit(0);
} else {
System.out.println("日期校验无差错!");
}
break;
case 2:
switch (day) {
case 30:
case 31:
System.out.println("对不起,您输入的年份是:" + year + "年" + month + "月不含第" + day + "日\n程序即将退出......");
System.exit(0);
case 29:
if (!isLeapMonth) {//平年的时
System.out.println("对不起,您输入的年份是:" + year + "年,为平年。" + year + "年" + month + "月不含第" + day + "日!\n程序即将退出......");
System.exit(0);
}
default:
System.out.println("日期校验无差错!");
}
break;
default:
System.out.println("日期校验无差错!");
}
switch (month) {
case 12:
days += 30;
case 11:
days += 31;
case 10:
days += 30;
case 9:
days += 31;
case 8:
days += 31;
case 7:
days += 30;
case 6:
days += 31;
case 5:
days += 30;
case 4:
days += 31;
case 3:
if (isLeapMonth)
days += 29;
else days += 28;
case 2:
days += 31;
case 1:
days += day;
break;
default:
System.out.println("对不起程序运行过程中出现失误,请联系管理员进行解决!");
}
System.out.println("您输入的日期为:" + year + "年" + month + "月" + day + "日,是" + year + "年的第" + days + "日");
scann.close();
}
}
实现效果如下: