/*
* 输入某年某月某日,判断这一天是这一年的第几天?(程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。)
* 一年是一个历法单位,有春夏秋冬四个节气,春天是年的开始和年的结束。一年就是12个月左右,不包括闰年,阳历365或366,阴历354或355天。
* 公历的一年中,1、3、5、7、8、10、12月,都是31天,4、6、9、11月,都是30天。2月份一般是28天。2月份4年有一个29天,你只要把公元计年的年份除以4,没有余数的那一年2月就是29天。
* 如2004年,除以4,没有余数,那这一年的2月肯定是29天,2005、2006、2007除4都有余数,这三年中的2月肯定是28天。
*
* 1、3、5、7、8、10、12月,都是31天
* 4、6、9、11月,都是30天。
* 2月份一般是28天。2月份4年有一个29天
*/
public class Test03 {
public static void main(String[] args) {
year();
}
public static void year() {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份: ");
int year = input.nextInt();
System.out.print("请输入月份: ");
int month = input.nextInt();
System.out.print("请输入第几天: ");
int day = input.nextInt();
int sum = 0;
boolean fals;
switch (month) {
case 1:
sum = 0;
break;
case 2:
sum = 31;
break;
case 3:
sum = 59;
break;
case 4:
sum = 90;
break;
case 5:
sum = 120;
break;
case 6:
sum = 151;
break;
case 7:
sum = 181;
break;
case 8:
sum = 212;
break;
case 9:
sum = 243;
break;
case 10:
sum = 273;
break;
case 11:
sum = 304;
break;
case 12:
sum = 334;
break;
default :
System.out.println("输入有误!请重新输入!!!");
return;
}
if ((day >= 32) || (day <= 0) || ((month == 4 || month == 6 || month == 9 || month == 10) && (day >= 31))) {
System.out.println("输入有误!请重新输入!!!");
return;
} else {
sum = sum + day;
}
if ((year % 400 == 0 || year % 4 == 0 && year % 100 != 0)) {
if ((month == 2 && (day >= 30)) || (day <= 0)) {
System.out.println("输入有误!请重新输入!!!");
return;
}
} else if ((year % 400 != 0 || year % 4 != 0 && year % 100 == 0)) {
if ((month == 2 && (day >= 29)) || (day <= 0)) {
System.out.println("输入有误!请重新输入!!!");
return;
}
} else {
sum = sum + day;
}
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
fals = true;
} else {
fals = false;
}
if (fals && (month > 2)) {
sum ++;
}
System.out.println(year + " 年 " + month + " 月 " + day + " 号是 " + year +" 的第: " + sum + " 天");
}
}
输入某年某月某日,判断这一天是这一年的第几天?
最新推荐文章于 2021-06-11 21:32:35 发布