共計 1294 個字符,預(yù)計需要花費 4 分鐘才能閱讀完成。
以下是一個簡單的 Java 實現(xiàn)萬年歷的代碼示例:
import java.util.Scanner;
public class Calendar {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);
System.out.print("請輸入年份:");
int year = scanner.nextInt();
System.out.print("請輸入月份:");
int month = scanner.nextInt();
printCalendar(year, month);
}
public static void printCalendar(int year, int month) {int totalDays = getDaysOfMonth(year, month);
int firstDayOfWeek = getFirstDayOfWeek(year, month);
System.out.println("日 一 二 三 四 五 六");
// 打印月份第一天之前的空格
for (int i = 0; i < firstDayOfWeek; i++) {System.out.print(" ");
}
// 打印日期
for (int i = 1; i <= totalDays; i++) {System.out.printf("%2d ", i);
// 換行
if ((i + firstDayOfWeek) % 7 == 0) {System.out.println();
}
}
}
public static int getDaysOfMonth(int year, int month) {int[] daysOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 判斷閏年
if (isLeapYear(year) && month == 2) {return 29;}
return daysOfMonth[month - 1];
}
public static int getFirstDayOfWeek(int year, int month) {
// 使用 Zeller 公式計算星期幾
if (month < 3) {
month += 12;
year--;
}
int century = year / 100;
year %= 100;
int dayOfWeek = (year + year / 4 + century / 4 - 2 * century + 26 * (month + 1) / 10) % 7;
// 轉(zhuǎn)換為星期日起始的數(shù)字
return (dayOfWeek + 7) % 7;
}
public static boolean isLeapYear(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
使用 Scanner 類獲取用戶輸入的年份和月份,然后調(diào)用 printCalendar()
方法打印萬年歷。printCalendar()
方法內(nèi)部使用 getDaysOfMonth()
方法獲取指定月份的天數(shù),getFirstDayOfWeek()
方法獲取指定年份和月份的第一天是星期幾。最后,使用循環(huán)打印出萬年歷的日歷部分。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完