学Java第二天直接上万年历!差点给cpu干烧了,还好多学了一个小时,成功敲进10分钟! package com.jr.www.demo1; import java.util.Scanner; public class Wannianli { public static void main(String[] args) { //接收年月 Scanner input = new Scanner(System.in); System.out.println("请输入年份:"); int year = input.nextInt(); System.out.println("请输入月份:"); int month = input.nextInt(); //计算输入的月份有多少天? int days = panDuanMonth(month, year); //求输入的年份距离1900年的整年天数差 int yearNum = 0; for (int i = 1900; i < year; i++) { yearNum += panDuanPingRun(i) ? 366 : 365; } //求输入年份整月的天数差 int monthNum = 0; for (int i = 1; i < month; i++) { monthNum += panDuanMonth(i, year); } //求输入年份,输入月份的一号是星期几 int week = (yearNum + monthNum + 1) % 7; System.out.println(year + "年" + month + "月一号是星期" + week); //打印万年历表头 System.out.println(year + "年" + month + "月\t\t\t\t^v"); System.out.println("一\t二\t三\t四\t五\t六\t日\t"); //先打印空格:将1号挤到对应的星期下面 for (int i = 1; i <= week - 1; i++) { System.out.print("\t"); } //打印万年历表 for (int i = 1; i <= days; i++) { System.out.print(i + "\t"); if ((yearNum + monthNum + i) % 7 == 0) { System.out.println(); } } } /*计算是平年还是闰年*/ public static boolean panDuanPingRun(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { return true; } else { return false; } } /*计算是大月,小月还是二月*/ public static int panDuanMonth(int month, int year) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { return 31; } else if (month == 4 || month == 6 || month == 9 || month == 11) { return 30; } else if (month == 2) { return panDuanPingRun(year) ? 29 : 28; } else { return -1; } } }
学Java的第二天,直接上万年历!
最新推荐文章于 2025-08-05 17:34:52 发布