【发布时间】:2017-05-20 09:50:34
【问题描述】:
我必须编写一个代码来告诉我公历的特定年份是否是闰年。但是我不确定该代码是否适用于每年。它适用于 1900、1901、2000。
在我粘贴代码之前,也许你应该知道是什么让公历年成为闰年:如果年模 4 等于 0,那么它就是闰年,如果年 % 4 = 0 和年 % 100 = 0 那么它不是。最后,如果 year % 4 = 0 并且 year % 100 = 0 并且 year % 400 = 0,那么它就是。
代码如下:
public static boolean isLeapYearGregorian(int year) {
if ((year % 4 == 0) && (year % 100 != 0) || (year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)) {
return true;
}
else {
return false;
}
}
谢谢
【问题讨论】:
-
还有什么问题?
-
观察:片段
(year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0)可以简化为(year%400==0)(因为任何400的倍数必然是4和100的倍数)。 -
再检查几年。它适用于2016年吗? 2017 年? 1600? 1601?您测试的案例越多,您的信心就越大。这就是单元测试的本质。如果你仍然不确定,问问自己为什么,如果你的怀疑是合理的,那么就想出更多的测试用例来缓解它们。