簡體   English   中英

閏年和下一個閏年java

[英]Leap year and next leap year java

我試圖找到下一個閏年。 我有第一個閏年。 我應該編碼什么以及在哪里編碼? 我知道我需要在某處打印聲明“是(“前一個閏年)旁邊的閏年。”只是不知道如何去做。例如,

輸入:2016

產出:2016年是閏年。

2020年是繼2016年之后的閏年。

  import java.util.Scanner;

  public class LabProgram {

  public static void main(String[] args) {

  Scanner scnr = new Scanner(System.in);
  int inputYear;
  int nextLeapYear;
  boolean isLeapYear;

  isLeapYear = false;
  inputYear = scnr.nextInt();

  if (inputYear % 4 == 0) {
        if (inputYear % 100 == 0) {
            isLeapYear = inputYear % 400 == 0;
        } else {
            isLeapYear = true;
        }
    }

    if (isLeapYear) {
        System.out.println(inputYear + " is a leap year.");
    } else {
        System.out.println(inputYear + " is not a leap year.");
    }
}}

將您的年份轉換為Year的實例或使用靜態Year.isLeap(x)方法。 然后,您可以執行以下所有操作:

  • 使用isLeap檢查當前年份是否為閏年
  • 添加任意數量的年份並再次檢查結果年份是否為isLeap
  • do { year = year.plusYears(4); } while (!year.isLeap()); 從已知的閏年中找出下一個閏年

java.time為時間java.time提供了高質量的庫,否則由於民用時間(DST、閏年、閏秒)的復雜性,很難做到正確。

 if (isLeapYear) {
    nextLeapYear = inputYear + 4 ;
    System.out.println(inputYear + " is a leap year.");
    System.out.println(nextLeapYear + " is next leap year.");

}    
else {
    nextLeapYear = inputYear + inputYear%4 ;
    System.out.println(inputYear + " is not a leap year.");
    System.out.println(nextLeapYear + " is next leap year.");
}

您可以使用java.time.Year

int givenYear = 2016;
int nextLeapYear = givenYear;

if (Year.isLeap(givenYear)) {
    while (!Year.isLeap(++nextLeapYear));
    System.out.println("Is leap year.");
    System.out.println("Next one is: " + nextLeapYear);
}
else {
    System.out.println("Not a leap year.");
}

您還可以使用 LocalDate 來查找 LeapYear 1

        LocalDate year2016 = LocalDate.ofYearDay(2016, 1);
        System.out.println ( "Is 2016 the leap year : " + year2016.isLeapYear());
        LocalDate nextLeapYearTest = year2016.plusYears(1);
        while(!nextLeapYearTest.isLeapYear()) {
            nextLeapYearTest = nextLeapYearTest.plusYears(1);
        }
        System.out.println ( "The next leapYear is : " + nextLeapYearTest.getYear());

如果您喜歡嵌套的 ifs 和硬編碼的代碼。

public static boolean isLeapYear(int year) {

    if (year > 0 && year <= 9999) {

       if(year %4 == 0){
           if(year %100 == 0){
               if(year % 400 == 0){
                   return true;
               }
               return false;
           }
           return true;
       }
    }
    return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM