首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 判斷閏年算法:兩種實現方式與邏輯推導詳解

     編輯:Java 綜合教學

Java 判斷閏年算法:兩種實現方式與邏輯推導詳解

閏年規則

  1. 整百年:能被 400 整除 → 閏年(如 1600、2000、2400)
  2. 非整百年:能被 4 整除 → 閏年(如 1996、2004、2008)
  3. 其他情況:平年

每 400 年包含 97 個閏年。

實現一:多層 if-else 邏輯(直觀易懂)

import java.util.Scanner;

public class LeapYearV1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入年份:");
        int year = sc.nextInt();

        if (year % 400 == 0) {
            System.out.println(year + " 年是閏年");
        } else if (year % 100 == 0) {
            System.out.println(year + " 年不是閏年");
        } else if (year % 4 == 0) {
            System.out.println(year + " 年是閏年");
        } else {
            System.out.println(year + " 年不是閏年");
        }
    }
}

實現二:單一邏輯表達式(簡潔高效)

public class LeapYearV2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入年份:");
        int year = sc.nextInt();

        // 能被 4 整除且不能被 100 整除,或者能被 400 整除
        boolean isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
        
        System.out.println(year + " 年" + (isLeap ? "是" : "不是") + "閏年");
    }
}

邏輯等價性驗證

年份%400%100%4V1結果V2結果
2000000閏年閏年
190030000平年平年
2004440閏年閏年
2001111平年平年

擴展:JDK 8+ 現代 API

import java.time.Year;

public class LeapYearModern {
    public static void main(String[] args) {
        int year = 2024;
        boolean isLeap = Year.of(year).isLeap();
        System.out.println(year + (isLeap ? " 是" : " 不是") + "閏年");
    }
}

java.time.Year.isLeap() 內部實現同邏輯表達式,推薦生產環境直接使用標準庫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved