打印有时出错
有些年月份打印出来格式出错程序代码:
import java.util.Scanner; public class Calendar { public static void main(String[] args) { @SuppressWarnings("resource") Scanner input = new Scanner(System.in); System.out.print("请输入年份: "); int year = input.nextInt(); System.out.print("请输入月份: "); int month = input.nextInt(); System.out.println("******************万 年 历******************"); System.out.println(" "+year+"年"+month+"月"); int days = 0; // 存储当月的天数 boolean LeapYear; /* 判断是否是闰年 */ if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年 LeapYear = true; // 闰年 } else { LeapYear = false;// 平年 } /* 计算输入的年份之前的天数 */ int totalDays = 0; for (int i = 1970; i < year; i++) { /* 判断闰年或平年,并进行天数累加 */ if (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年 totalDays = totalDays + 366; // 闰年366天 } else { totalDays = totalDays + 365; // 平年365天 } } /* 计算输入月份之前的天数 */ int beforeDays = 0; for (int i = 1; i <= month; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 2: if (LeapYear) { days = 29; } else { days = 28; } break; default: days = 30; break; } if (i < month) { beforeDays = beforeDays + days; } } totalDays = totalDays + beforeDays; // 距离1970年1月1日的天数 /* 计算星期几 */ int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6 int temp = 4 + totalDays % 7; // 从1970年1月1日推算 if (temp == 7) { // 求当月第一天 firstDayOfMonth = 0; // 周日 } else { firstDayOfMonth = temp; } /* 输出日历 */ System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); for (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++) { System.out.print("\t"); // 输出空格 } for (int i = 1; i <= days; i++) { System.out.print(i + " \t"); if ((temp - 1 + i) % 7 == 6) { // 如果当天为周六,输出换行 System.out.println(); } } } }