1 import java.util.*; 2 public class Year{ 3 public static void main(String[] args){ 4 System.out.println("输入年份和月份,判断是否为闰年,并输出当前月份的天数"); 5 System.out.println("请输入你想要测试的年份:"); 6 Scanner in=new Scanner(System.in); 7 int year=in.nextInt(); 8 boolean bool=true; 9 int sum=0;//定义一个变量用来表示输入的时间距离1900年有多少天 10 int k=0;//用来表示输入的月份有几天 11 while(bool){ 12 if(year<1900){ 13 System.out.println("计算机时间从1900年才开始,所以输入有误,请重新输入:"); 14 year=in.nextInt(); 15 }else{ 16 bool=false; 17 } 18 } 19 if(year%4==0&&year%100!=0||year%400==0){ 20 System.out.println(year+"为闰年"); 21 }else{ 22 System.out.println(year+"为平年"); 23 } 24 System.out.println("请输入你想要测试的月份:"); 25 int month=in.nextInt(); 26 bool=true; 27 while(bool){ 28 if(month>12||month<1){ 29 System.out.println("你输入的月份不正确请重新输入:"); 30 month=in.nextInt(); 31 }else{ 32 bool=false; 33 } 34 } 35 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ 36 System.out.println(month+"月有31天"); 37 }else if(year%4==0&&year%100!=0||year%400==0&&month==2){ 38 System.out.println(month+"月有29天"); 39 }else if(year%4!=0&&month==2){ 40 System.out.println(month+"月有28天"); 41 }else{ 42 System.out.println(month+"月有30天"); 43 } 44 for(int i=1;i<=month-1;i++){//求输入的月份之前有多少天,eg:输入5月求出1-4有几天 45 if(i==2){ 46 if(year%4==0&&year%100!=0||year%400==0){ 47 sum=sum+29; 48 }else{ 49 sum=sum+28; 50 } 51 }else{ 52 if(i==4||i==6||i==9||i==11){ 53 sum=sum+30; 54 }else{ 55 sum=sum+31; 56 } 57 } 58 } 59 System.out.println(sum); 60 for(int i=1900;i<=year-1;i++){//求输入的年份到1900年有多少天 61 if(i%4==0&&i%100!=0||i%400==0){ 62 sum=sum+366; 63 }else{ 64 sum=sum+365; 65 } 66 } 67 sum=sum+1;//输入的日期距离1900年有多少天,+1是正好到了这一天 68 System.out.println(sum); 69 int weekday=sum%7;//算出到1900年有多少星期 70 System.out.println("当月日历如下:"); 71 System.out.println(year+"年"+month+"月的日历"); 72 System.out.println("日\t一\t二\t三\t四\t五\t六"); 73 for(int i=1;i<=weekday;i++){ 74 System.out.print("\t"); 75 }//输入月份第一天是周几 76 if(month==2){ 77 if(year%4==0&&year%100!=0||year%400==0){ 78 k=29; 79 }else{ 80 k=28; 81 } 82 }else{ 83 if(month==4||month==6||month==9||month==11){ 84 k=30; 85 }else{ 86 k=31; 87 } 88 }//输入的月有几天 89 for(int i=1;i<=k;i++){ 90 if(sum%7==6){ 91 System.out.print(i+"\n"); 92 }else{ 93 System.out.print(i+"\t"); 94 } 95 sum++; 96 }//输出打印日历 97 98 } 99 }