1 import java.util.Scanner;
com.lv.calendarWatch//包名
/*
* 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确
* 1.1900年1月1号开始
* 2.星期 : 直接用总天数对7求余数
* 3.以\t来个开
*/
public class Demo9 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub Demo9 demo = new Demo9();
Scanner keyInput =new Scanner(System.in);
System.out.println("请输入你想要查的年");
int key1 = keyInput.nextInt();
System.out.println("请输入你想要查的月份");
int key2 = keyInput.nextInt();
demo.show(key1,key2); } //定义一个工具方法:判断平年还是闰年
public boolean isLeapYear(int year){ if(year % 400 == 0 || (year % 4==0 && year % 100 != 0)){ return true;
} return false;
} //计算输入年份下,月份的总天数 1900 public int getTotalDateFrom(int year , int month){ //1.定年份的总天数
int totalDate = 0;//1900到你输入的年份的总天数 2016 1900 - 1903 = 3
for(int i= 1900 ; i < year ;i++){ if(isLeapYear(i)){ // 闰年 totalDate += 366;
}else { totalDate += 365;
}
} //2.计算月份的天数
for(int i = 1 ; i< month ;i++){ totalDate += getDayOfMonth(year, i);
} return totalDate; } public int getDayOfMonth(int year , 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 30;
}
} public int printSpace(int year , int month){ return getTotalDateFrom(year, month) % 7;
} public void print(int year , int month){ int countSpac = printSpace(year, month) + 1; // 空格的个数
int count = 0; //定义一个计数
for(int i = 1; i<=countSpac; i++){
count++;
System.out.print("\t");
} //2.打印日期
for(int i = 1 ; i<=getDayOfMonth(year, month);i++){ if(count % 7 == 0){ System.out.println();
}
count++;
System.out.print(i+"\t"); } } public void show(int year , int month){ System.out.println("******************"+year+"****"+month+"***************************");
System.out.println("======================================================");
System.out.println("日\t一\t二\t三\t四\t五\t六");
System.out.println("======================================================");
print(year, month);
System.out.println();
} }
运行结果如下所示: