java基本语句打印日历
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入如年份:"); int year = scanner.nextInt(); int dayOfWeek = 3; //记录星期几,以2020-1-1为基准,星期三 int day=0 ; //记录每个月有多少天 //2020年往后,用增加的天数模7,加到星期三得到新的星期,当超过7的时候,在模7就可以 if (year > 2020) { for (int i = 2020; i < year; i++) { if (i % 400 == 0 || (i % 100 != 0 && i % 4 == 0)) { dayOfWeek = (366 % 7 + dayOfWeek) % 7; } else { dayOfWeek = (365 % 7 + dayOfWeek) % 7; } } } //在2020年之前,用相差的天数模7,从周三减去,先加7在取模得到星期 if (year < 2020) { for (int i = 2019; i >= year; i--) { if (i % 400 == 0 || (i % 100 != 0 && i % 4 == 0)) { dayOfWeek = (dayOfWeek - 366 % 7 + 7) % 7; } else { dayOfWeek = (dayOfWeek - 365 % 7 + 7) % 7; } } } //得到星期后,将周日的dayOfWeek改为7,方便使用 if (dayOfWeek == 0) { dayOfWeek = 7; } //开始打印 for (int i = 1; i <= 12; i++) { //判断每个月的天数day switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) { day = 29; break; } else { day = 28; break; } } //打印表头 System.out.println("\n---------------------" + year + "年" + i + "月" + "---------------------"); System.out.println(); System.out.println("一\t二\t三\t四\t五\t六\t日"); //打印前面的空位 for (int j = 0; j < dayOfWeek - 1; j++) { System.out.print("\t"); } //打印日期 for (int j = 1; j <= day; j++) { System.out.print(j + "\t"); if (++dayOfWeek > 7) { //每打一天星期后移,打完周日换行,dayOfWeek归1 System.out.println(); dayOfWeek = 1; } } } scanner.close(); }
个人笔记、顺便分享、欢迎指正