package MyCalendar;
import java.util.Scanner;
/*
* 万年历
*/
public class Calendar
{
private static Scanner in = new Scanner(System.in);
private static int year;
private static int month;
private static int days; //接收当月第一天星期几的变量
private static int monthDays; //接收当月天数的变量
/*
* 判断年份 瑞 平
*/
private static boolean isRun(int year)
{
if(year % 4 == 0 && year% 100 != 0 || year % 400 == 0)
{
return true;
}
return false;
}
/*
* 判断当月天数。
*/
private static int getMonthDay(int year , int month)
{
int days = 31;
switch(month)
{
case 2:
if(isRun(year))
{
days = 29;
}
else
{
days = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
}
return days;
}
/*
* 计算1900-1-1至传入年月过了多少天。
*/
private static int getTotaDays(int year , int days)
{
int todaDays = 0;
for(int i = 1900 ; i < year ; i++ ) //1900-year 总天数
{
if(isRun(i))
{
todaDays += 366;
}
else
{
todaDays += 365;
}
}
for(int i = 1 ; i < month ; i++) //计算year年month-1月 的总天数
{
todaDays += getMonthDay(year, i);
}
return todaDays;
}
public static void main(String[] args)
{
System.out.println("*****欢迎使用万年历*****");
System.out.println("******请输入年份!******");
year = in.nextInt();
System.out.println("******请输入月份!******");
month = in.nextInt();
System.out.println("您输入的是"+year+"年,"+month+"月");
System.out.println(isRun(year)?"*******是瑞年*******":"*******是平年*******");
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t");
int iCount = 0; //计数器,用于统计周天数,方便换行。
days = ((getTotaDays(year, month)+1)%7); //计算当月第一天星期几
monthDays = getMonthDay(year , month);//当月天数
for(int i = 0 ; i < days ; i++) //打印出日历头空白区域。
{
System.out.print("\t");
iCount++;
}
for(int i = 1 ; i <= monthDays ; i++)//打印当月
{
System.out.print(i+"\t");
iCount++;
if(iCount%7==0)
{
System.out.println();
}
}
}
}