我想计算一下我写这段代码的最后20个闰年,这段代码可以进一步优化吗


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;
}
}

我想优化这部分代码,请帮助我

您的函数在每次迭代中都执行I/O操作。I/O速度较慢,因此效果最大的优化是将输出累积到缓冲区中,并只打印一次。对算术的任何修改都不会产生有意义的影响。

public static int leapFor(int year) {
int counter = 0, i;
StringBuilder output = new StringBuilder(20*(4+1));
for (i = year; i >= 1; i--) {
if ((i % 4 == 0) && i % 100 != 0 || i % 400 == 0) {
output.append(i).append('n');
counter++;
}
if (counter == 20)
break;
}
System.out.print(output);
return i;
}

最新更新