模拟制作万年历 最重要的就是如何确定这个月的第一天是周几 和 这个月 有几天 。
然而 每年的每个月 除了二月 都是固定的 要判断是否是闰年,和这个月有几天 然后再按照顺序打印出来
public class Demo01 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入要查询的年份:"); //2018
int year = in.nextInt();
System.out.println("请输入要查询的月份:"); //7
int month = in.nextInt();
int allDays = 0; //存储总天数
int monthDays = 0; //月份的天数
for(int i = 1900; i < year; i++){
if((i % 4 ==0 && i%100!=0) || (i%400==0)){
allDays += 366;
}else{
allDays += 365;
}
}
for(int i = 1; i <= month; i++){
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
monthDays = 30;
break;
case 2:
if((year % 4 ==0 && year %100!=0) || (year %400==0)){
monthDays = 29;
}else{
monthDays = 28;
}
}
if(i < month)
allDays += monthDays;
}
int week = (allDays+1)%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i = 0; i < week; i++){
System.out.print("\t");
}
for (int i = 1; i <= monthDays; i++) {
System.out.print(i+"\t");
if((allDays+i) % 7 == 6)
System.out.println(); //换行作用
}
}
}