📜  如何在Java中打印下一个 N 闰年?

📅  最后修改于: 2022-05-13 01:54:36.205000             🧑  作者: Mango

如何在Java中打印下一个 N 闰年?

概念:解决问题的基本主张 闰年是一个 4 年的间隔本身就是错误的。对于日历中的任何随机年份是闰年,它必须满足以下条件。现在,如果年份是闰年,则目标只是在日历年中打印连续的相同类型的年份,即所有年份都应该是闰年之前,或者遵循要考虑的闰年来说明和实施相同的年份。

方法:解决问题很简单,分成两部分。前半部分是确定闰年与否并为其编写代码的重点。后半部分只是强调在遇到闰年并与前半部分同步时保持计数。

一年必须满足的强制性条件称为闰年

  • 年份应该是 400 的倍数。
  • 年份应该是 4 的倍数,而不应该是 100 的倍数。

算法:

  1. 条件检查与 4 的整除性 - 如果数字可以被 4 整除,则检查将进一步进行,如果数字不能被 4 整除,那么肯定不是闰年。
  2. 条件检查与 100 的可整性-这里得到的年份已经可以被 4 整除。现在进一步如果年份满足上述条件那么如果年份可被 100 整除,则该年份进行进一步的条件检查。如果这个数字不能被 100 整除,那么肯定不是闰年。
  3. 条件检查与 400 的整除性- 这里获得的年份已经可以被 4 和 100 整除。现在进一步,如果年份可以被 400 整除,那么肯定是闰年,否则肯定不是闰年。
  4. 目前这里得到的年份是闰年,打印闰年的方法很简单
    • 用零初始化变量以保持单圈年计数
    • 当确定年份是闰年时增加计数
    • 迭代考虑条件语句的计数以及条件失败的情况,只需返回之前满足条件的所有年份。

插图:

Input 1: year = 2020, N = 15
Output:    2024
       2028
       2032
       2036
       2040
       2044
       2048
       2052
       2056
       2060
       2064
       2068
       2072
       2076
       2080
       
Input 2: year = 2022, N = 2
Output:    2024
           2028

实现:下面是在Java中说明上述插图的示例:

Java
// Java program to print the next n leap years
 
// Importing generic Classes/Files
import java.io.*;
 
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Considering current year & initializing same
        int year = 2020;
        // Considering user entered custom leap year
 
        int n = 15;
        // n is the no of leap years after year 2020
        // that is needed to print
 
        int count = 0;
        // Creating and initializing a variable
        // to maintain count of leap years
 
        while (count != n)
        // Conditionality check- Count variable should never
        // equals number of leap years to be printed
        {
 
            year = year + 1;
            // Incrementing the year count by 1
 
            if ((year % 400 == 0)
                || (year % 4 == 0 && year % 100 != 0)) {
 
                // If the year is leap year,then increment
                // the count
                count++;
 
                // Print the leap year
                System.out.println(year);
            }
        }
    }
}


输出
2024
2028
2032
2036
2040
2044
2048
2052
2056
2060
2064
2068
2072
2076
2080