如何在Java中打印下一个 N 闰年?
概念:解决问题的基本主张 闰年是一个 4 年的间隔本身就是错误的。对于日历中的任何随机年份是闰年,它必须满足以下条件。现在,如果年份是闰年,则目标只是在日历年中打印连续的相同类型的年份,即所有年份都应该是闰年之前,或者遵循要考虑的闰年来说明和实施相同的年份。
方法:解决问题很简单,分成两部分。前半部分是确定闰年与否并为其编写代码的重点。后半部分只是强调在遇到闰年并与前半部分同步时保持计数。
一年必须满足的强制性条件称为闰年
- 年份应该是 400 的倍数。
- 年份应该是 4 的倍数,而不应该是 100 的倍数。
算法:
- 条件检查与 4 的整除性 - 如果数字可以被 4 整除,则检查将进一步进行,如果数字不能被 4 整除,那么肯定不是闰年。
- 条件检查与 100 的可整性-这里得到的年份已经可以被 4 整除。现在进一步如果年份满足上述条件那么如果年份可被 100 整除,则该年份进行进一步的条件检查。如果这个数字不能被 100 整除,那么肯定不是闰年。
- 条件检查与 400 的整除性- 这里获得的年份已经可以被 4 和 100 整除。现在进一步,如果年份可以被 400 整除,那么肯定是闰年,否则肯定不是闰年。
- 目前这里得到的年份是闰年,打印闰年的方法很简单
- 用零初始化变量以保持单圈年计数
- 当确定年份是闰年时增加计数
- 迭代考虑条件语句的计数以及条件失败的情况,只需返回之前满足条件的所有年份。
插图:
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