1. package com.test2;  
  2.  
  3. import java.util.Scanner;  
  4.  
  5. public class Demo2 {  
  6.  
  7.     /**  
  8.      * @param args  
  9.      */ 
  10.     public static void main(String[] args) {  
  11.         // TODO Auto-generated method stub  
  12.  
  13.         System.out.println("请输入年份:");  
  14.         Scanner sc = new Scanner(System.in);  
  15.         int years = sc.nextInt();  
  16.         Year y = new Year();   
  17.         y.weekDay = y.firstWeekDay(years);  
  18.         y.year = years;  
  19.         System.out.println("\n "+years+"年      ");  
  20.         y.showMonth();  
  21.           
  22.     }  
  23.  
  24. }  
  25.  
  26. class Year {  
  27.     public static int year, weekDay;  
  28.  
  29.     public boolean isLeapYear(int year) {  
  30.         return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));  
  31.     }  
  32.  
  33.     public int firstWeekDay(int year) {  
  34.  
  35.         long day = year * 365;  
  36.         for (int i = 1; i < year; i++) {  
  37.             if (isLeapYear(i)) {  
  38.                 day += 1;  
  39.             }  
  40.         }  
  41.         return (int) (day % 7);  
  42.     }  
  43.  
  44.     public int getMonthDay(int month) {  
  45.         switch (month) {  
  46.         case 1:  
  47.         case 3:  
  48.         case 5:  
  49.         case 7:  
  50.         case 8:  
  51.         case 10:  
  52.         case 12:  
  53.             return 31;  
  54.         case 4:  
  55.         case 6:  
  56.         case 9:  
  57.         case 11:  
  58.             return 30;  
  59.         case 2:  
  60.             if (isLeapYear(year)) {  
  61.                 return 29;  
  62.             } else {  
  63.                 return 28;  
  64.             }  
  65.         default:  
  66.             return 0;  
  67.         }  
  68.     }  
  69.  
  70.     public void showMonth() {  
  71.         for (int m = 1; m <= 12; m++) {  
  72.             System.out.println(m + "月");  
  73.             System.out.println(" Sunday  Monday Tuesday Wednesday Thursday Friday Saturday");  
  74.             for (int j = 1; j <= weekDay; j++) {  
  75.                 System.out.print("        ");  
  76.             }  
  77.             int monthDay = getMonthDay(m);  
  78.             for (int d = 1; d <= monthDay; d++) {  
  79.                 if (d < 10) {  
  80.                     System.out.print("   " + "0" + d + "   ");  
  81.                 } else {  
  82.                     System.out.print("   " + d + "   ");  
  83.                 }  
  84.                 weekDay = (weekDay + 1) % 7;  
  85.                 if (weekDay == 0) {  
  86.                     System.out.println();  
  87.                 }  
  88.             }  
  89.             System.out.println();  
  90.         }  
  91.       
  92.     }  
  93. }