该程序通过手动键入年份–月份–日期判断这天是该年的第多少天
//判断某个日期是当年的第多少天
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 + "天");
}
}
程序较为繁琐,更多的是添加限制条件,学习可以请勿盗用