package java04;
import java.io.IOException;
import java.util.Scanner;
/*
* 打印一年中的日历*/
public class Java04 {
static int year,weekDay;//定义静态变量,以便其他类调用
public static boolean isLeapYear(int year){//判断是否是闰年
return((year %4 ==0 && year%100 !=0)||(year%400==0));
}
public static int firstWeekDayOfYear(int year){//判断该年第一天是星期几
long day =year *365;
for(int i=1;i<year;i++)
if(isLeapYear(i))//判断是闰年
day+=1;
return(int) day % 7;
}
public static int getMonthOfDays(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;
}
}
public static void showMonth(){
for(int m=1;m<=12;m++)
{
System.out.println(year+"年"+m+"月");
System.out.println("Sunday Monday Tuesday Wednesday Thursday Friday Saturday");
for(int j=1;j<=weekDay;j++){
System.out.print(" ");
}
int monthDay=getMonthOfDays(m);//获取每个月的天数
for(int d=1;d<=monthDay;d++){
if(d<10)
System.out.print(" "+"0"+d+" ");
else
System.out.print(" " + d + " ");
weekDay = (weekDay + 1) % 7; // 判断当天的第二天是星期几
if (weekDay == 0) // 如果第二天是星期天,便换行。
System.out.println();
}
System.out.println();
}
}
public static void main(String[] args) {
System.out.println("请输入一个年份:");
Scanner sc=new Scanner(System.in);
String str =sc.next();
year =Integer.parseInt(str);
weekDay = firstWeekDayOfYear(year); // 计算该年第一天是星期几
System.out.println(year + "年 ");
showMonth();
}
}