【发布时间】:2020-10-14 10:35:33
【问题描述】:
package javaHM;
import java.util.*;
public class LeapYear {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner obj = new Scanner(System.in);
System.out.println("Enter Starting Year");
int year = obj.nextInt();
leapFor(year);
obj.close();
}
public static int leapFor(int year) {
int counter = 0, i;
for (i = year; i >= 1; i--) {
if ((i % 4 == 0) && i % 100 != 0 || i % 400 == 0) {
System.out.println(i);
counter++;
}
if (counter == 20)
break;
}
return i;
}
}
我想优化这部分代码,请帮帮我
【问题讨论】:
-
@rzwitserloot 你确定吗?
-
“此代码能否进一步优化”以 1 为增量循环没有什么意义。以 4 为增量循环(从
year / 4 * 4开始)。 -
我只会使用 java.time 包中的静态方法
Year.isLeap()。它会简化你的代码。 -
@rzwitserloot 好的,我正在查看维基百科。 en.m.wikipedia.org/wiki/2000 2000 (MM) 是一个世纪 闰年,从公历的星期六开始,即共同纪元 (CE) 和纪元 (AD) 指定的第 2000 年,即第 1000 年以及第二个千年的最后一年,20 世纪的第 100 年和最后一年,以及 2000 年代的第 1 年。
-
@rzwitserloot 你错了。能被 400 整除的世纪年是闰年。 2100 可以被 4 整除,但不是闰年,因为它不能被 400 整除。
标签: java optimization