1 import java.util.Scanner; 2 3 public class Calenda { 4 public static void main(String[] args) { 5 System.out.println("************请输入万年历************"); 6 7 Scanner sc=new Scanner(System.in);//键盘获取 8 //用户输入 9 System.out.println("请输入年份: "); 10 int year=sc.nextInt(); 11 System.out.println("请输入月份:"); 12 int month=sc.nextInt(); 13 14 int i;//自1900年起的所有年份 15 int tian=31;//判断是否为大月份 16 int days=0;//1900.1.1作为起点 17 18 for(i=1900;i<year;i++) 19 { 20 if((i%4==0 && i%100!=0) || (i%400==0)) //能被4整除且不能被100整除的年份为闰年 21 { 22 days+=days+366; 23 } 24 else 25 { 26 days+=days+365; 27 } 28 } 29 int day=0;//天数变量 30 //计算输入月份与1月1日之间的天数 31 for(int a=1;a<=month;a++) 32 { 33 switch(a) 34 { 35 case 1: 36 case 3: 37 case 5: 38 case 7: 39 case 8: 40 case 10: 41 case 12: 42 tian=31; 43 if(a<month) 44 { 45 day=day+tian;// 46 } 47 break; 48 case 4: 49 case 6: 50 case 9: 51 case 11: 52 tian=30; 53 if(a<month) 54 { 55 day=day+tian; 56 } 57 break; 58 case 2: 59 //平均与闰年的2月份天数分别是28天和29天 60 if((i%4==0 && i%100!=0) || (i%400==0)) 61 { 62 tian=29; 63 if(a<month) 64 { 65 day=day+tian; 66 } 67 else 68 { 69 tian=28; 70 if(a<month) 71 { 72 day=day+tian; 73 } 74 } 75 break; 76 } 77 } 78 days=days+day;//总天数 79 //判断输入年月的第一天是星期几(一直1900年一月一日星期一) 80 int firstDayofMonth=0; 81 firstDayofMonth=1+days%7; 82 if(firstDayofMonth%7==0) 83 { 84 firstDayofMonth=0;//星期天 85 } 86 87 System.out.println("星期天 星期一 星期二 星期三 星期四 星期五 星期六 "); 88 for(int n=0;n<firstDayofMonth;n++)//打印空格 89 { 90 System.out.print(" "); 91 } 92 //打印天数 93 for(int v=1;v<=tian;v++) 94 { 95 System.out.print(v+" ");//空格+日期=7则换行 96 if((firstDayofMonth+v)%7==0) 97 { 98 System.out.println(); 99 } 100 } 101 } 102 } 103 }
打印出1~12月份的日历表,剩余部分省略