计算闰年的Java代码
我正在阅读《Java的艺术与科学》一书,它展示了如何计算闰年。 这本书使用了ACM Java任务组的库
以下是本书使用的代码:
import acm.program.*;
public class LeapYear extends ConsoleProgram {
public void run()
{
println("This program calculates leap year.");
int year = readInt("Enter the year: ");
boolean isLeapYear = ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));
if (isLeapYear)
{
println(year + " is a leap year.");
} else
println(year + " is not a leap year.");
}
}
现在,这就是我计算闰年的方法
import acm.program.*;
public class LeapYear extends ConsoleProgram {
public void run()
{
println("This program calculates leap year.");
int year = readInt("Enter the year: ");
if ((year % 4 == 0) && year % 100 != 0)
{
println(year + " is a leap year.");
}
else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
{
println(year + " is a leap year.");
}
else
{
println(year + " is not a leap year.");
}
}
}
我的代码有什么问题吗?还是应该使用书中提供的代码
编辑::以上两种代码都很好,我想问的是哪种代码是计算闰年的最佳方法
# 1 楼答案
维基百科中的伪代码被翻译成最紧凑的Java
# 2 楼答案
我建议您将此代码放入一个方法中,并创建一个单元测试
在单元测试中
# 3 楼答案
正确的实施方式是:
但如果你打算重新发明这个轮子,那么:
# 4 楼答案
java.time.Year::isLeap
我想用^{} 类和^{} 方法添加新的^{} 方法:
# 5 楼答案
# 6 楼答案
最有效的闰年测试:
这是我在https://stackoverflow.com/a/11595914/733805上详细回答的摘录