import java.util.Scanner;
public class _calendar {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入年份:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
if (year < 1900) {
System.out.println("请输入大于1900年的年份:");
year = sc.nextInt();
}
System.out.println("请输入月份:");
int month = sc.nextInt();
if (month < 0 || month > 12) {
System.out.println("请输入正确月份(1-12):");
month = sc.nextInt();
}
System.out.println("年份:" + year + ",月份:" + month);
/* 判断是否是闰年 */
boolean y = run_count(year);
System.out.println();
/*
* if((year%4==0)&&(year%100!=0)||(year%400==0)) {
* System.out.println("该年份是闰年!"); y=true; } else { y=false;
* System.out.println("该年份不是闰年!"); }
*/
/* 计算输入月份的天数 */
int day;
day = day_count(y, month);
/*
* { if((y==true)&&(month==2)) { day=29;
* System.out.println("该年月份下,月份:"+day+"天"); } else
* if((y==false)&&(month==2)) { day=28;
* System.out.println("该年月份下,月份:"+day+"天"); } else
* if((month==4)||(month==6)||(month==9)||(month==11)) { day=30;
* System.out.println("该年月份下,月份:"+day+"天"); } else {day=31;
* System.out.println("该年月份下,月份:"+day+"天");}}
*/
/* 计算该月第一天是星期几 */
/* 1、计算输入年份距离1900年1月1日的天数 */
int run = 0;// 输入年份距1900之间有多少闰年
for (int x = 1900; x < year; x++) {
if (run_count(x) == true)
run++;
}
int day_1 = run * 366 + (year - 1900 - run) * 365;// 俩年之间天数
System.out.println("该二年之间闰年数:" + run);
/* 2、计算输入月份之前的天数(从当年年初开始) */
int day_2 = 0;// 改年初到该月天数
int i = month - 1;
while (i >= 1) {
day_2 += day_count(y, i);
i--;
}
/* 3、求和 */
int days = day_1 + day_2;
System.out.println("总天数:" + days);
int week_day = 1 + days % 7;
System.out.println("星期几:" + week_day);
/* 实现日历--简单试试 */
System.out.println("********************欢迎使用万年历*********************");
System.out.println("/n年份:" + year + ",月份:" + month);
System.out.print("/n/n星期日/t星期一/t星期二/t星期三/t星期四/t星期五/t星期六/n");
int k = 0;
for (int j = 0; j < week_day % 7; j++)// 刚开始未%除有漏洞,注意
{
k++;
System.out.print("/t");
}
for (int a = 1; a <= day; a++) { // if(k==7)
// {k=0;System.out.println();}
System.out.print(a + "/t");
k++;
if (k == 7) {
k = 0;
System.out.println();
}
}
System.out.println();
}
public static int day_count(boolean y, int m) {
if ((y == true) && (m == 2))
return 29;
else if ((y == false) && (m == 2))
return 28;
else if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
return 30;
else
return 31;
}
public static boolean run_count(int ye) {
if ((ye % 4 == 0) && (ye % 100 != 0) || (ye % 400 == 0)) {
System.out.println(ye + "年份是闰年!");
return true;
} else {
System.out.println(ye + "年份不是闰年!");
return false;
}
}
}