/*****************
* 完成月历显示功能
* @author = 小猫怪
* @version = 3.02
******************
*/
import java.util.*;
public class Test2 {
public static void main(String[] args) {
int year = 0;
int month = 0;
int totalDay = 0;
int yy = 1900;
int mm = 1;
int week = 0; //记录星期几
int line = 0; //月历的行
int column = 0; //月历的列
int monthDay = 0; //当月天数
int everyDay = 1; //自加的天数
boolean isRuen = false;
Scanner input = null;
System.out.print("请输入年份(在1900年之后) :");
input = new Scanner(System.in);
if(input.hasNextInt()) {
year = input.nextInt();
}
System.out.print("请输入月份 :");
if(input.hasNextInt()) {
month = input.nextInt();
}
//计算年份的天数
for(yy = 1900; yy < year; yy++) {
//判断每一年是否是闰年
if((yy % 4 == 0 && yy % 100 != 0 )|| (yy % 400 == 0)) {
isRuen = true;
} else {
isRuen = false;
}
if (isRuen){
totalDay = totalDay + 366;
} else {
totalDay = totalDay + 365;
}
}
//计算月份的天数
//判断当年是不是闰年
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
isRuen = true;
}
for(mm = 1; mm < month; mm++) {
switch(mm) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
totalDay = totalDay + 31;
break;
case 2:
if(isRuen) {
totalDay = totalDay + 29;
} else {
totalDay = totalDay + 28;
}
break;
default:
totalDay = totalDay + 30;
break;
}
}
//1900 1 1 星期一 2013 7 1
week = totalDay % 7 ;
//计算输入的月份有多少天
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDay = 31;
break;
case 2:
if(isRuen) {
monthDay = 29;
} else {
monthDay = 28;
}
break;
default:
monthDay = 30;
break;
}
System.out.println("日\t一 \t二\t三\t四\t五\t六");
for (int i = 1; i <= week; i++) {
System.out.print("\t");
}
for( line = 1; line <= (7 - week); line++ ) {
System.out.print( line + "\t" );
}
System.out.println();
for( ; line<= monthDay;line++) {
System.out.print( line + "\t" );
if((line + week) % 7 == 0) {
System.out.println();
}
}
System.out.println();
}
}