初学,示例代码里看到的觉得很强大,自己也试试。
package du; import java.util.Scanner; public class Test { public static void main(String argv[]){ while(true){ System.out.println("输入年份:"); Scanner sc=new Scanner(System.in); int year=sc.nextInt(); System.out.println(year); System.out.println(); for(int i=1;i<13;i++){ System.out.println(i+"月"); System.out.println("----------------------------------"); System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六"); ShowMonth(year,i); } } } public static void ShowMonth(int year,int month){ int firstday=weekday(year, month, 1); for(int i=0;i<firstday;i++){ System.out.print(" "); } for(int j=1;j<=daysofMonth(year, month);j++){ if(j<10){ System.out.print("0"+j+" "); } else System.out.print(j+" "); if(firstday==6){ System.out.println(); firstday=-1; } firstday++; } System.out.println(); System.out.println("----------------------------------"); } public static boolean isLeapYear(int year){ boolean flag = false; if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) flag = true; else flag = false; return flag; } public static int weekday(int year,int month,int day){ long amount=0; for(int i=1;i<year;i++){ if(isLeapYear(i)) amount++; } amount+=365*(year-1); for(int i=1;i<month;i++){ amount+=daysofMonth(year, i); } amount+=day; //System.out.println(amount); int week=(int) (amount%7); return week; } private static int daysofMonth(int year,int month){ switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31; case 4: case 6: case 9: case 11:return 30; case 2: if(isLeapYear(year)) return 29; else return 28; default :return 0; } } }