第3个回答 2009-05-11
import java.util.Scanner;
public class TestWNL {
/**
* @param args
*/
public static void main(String[] args) {
int year, month, days;
boolean isR = false;
Scanner sc = new Scanner(System.in);
System.out
.println("************************* 欢 迎 使 用 万 年 历 ****************************\n");
System.out.print("请输入年份:");
year = sc.nextInt();
System.out.print("\n请输入月份:");
month = sc.nextInt();
System.out.print("\n请输入日期:");
days = sc.nextInt();
if(year%4==0 && year%100!=0 || year%400 ==0)
isR = true;
String txtYear = "";
if(isR)
txtYear = "闰年";
else
txtYear = "平年";
int sumDay = 0;
//得到1900,1,1日到今年的总天数
for (int i = 1900; i < year; i++) {
if(i%4==0 && i%100!=0 || i%400 ==0)
sumDay+=366;
else
sumDay+=365;
}
//今年的月份的总天数 加上 总天数
for (int i = 1; i < month; i++) {
sumDay += getSumDay(i,isR);
}
System.out.println("加上月份的天数"+sumDay);
int first = sumDay +1;
sumDay += days;//总天数加上今年的号数
System.out.println("加上月份和天数的天数"+sumDay);
int x = sumDay % 7; //得到今天是星期几
String week = "";
switch (x) {
case 0:
week = "星期日";
break;
case 1:
week = "星期一";
break;
case 2:
week = "星期二";
break;
case 3:
week = "星期三";
break;
case 4:
week = "星期四";
break;
case 5:
week = "星期五";
break;
case 6:
week = "星期六";
break;
}
System.out.println(year+"年"+month +"月"+days+"日是星期"+week);
System.out.print("\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
int p = 0;
first %=7;
for (; p < first; p++) {
System.out.print("\t");
}
for (int i = 1; i <= getSumDay(month,isR); i++) {
System.out.print(i + "\t");
if((p+i)%7==0)
System.out.println();
}
}
static int getSumDay(int i,boolean isR) {
int days = 0;
switch(i) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
case 2:
if(isR)
days = 29;
else
days = 28;
break;
}
return days;
}
}