使用上述if ... else语句查找年份是否为a年。验证程序是否具有以下输入:2104(true),2100(false),2000(true),2001(false)。提示:year年可平均除以4;但是,如果将一年平均除以100,则它不是a年,除非该年份也可以平均除以400。
嗨,我看到了两种替代解决方案。但是只有一种方法可以提供解决方案,而另一种条件则无法使用。有人可以帮忙吗?
成功输出
function leapYear3(year) {
if ((year % 4 == 0) && (year % 100 != 0)) {
console.log('TRUE');
} else if (year % 400 == 0) {
console.log('TRUE');
} else {
console.log('FALSE');
}
}
console.log(leapYear3(2104)); // True
console.log(leapYear3(2000)); // True
console.log(leapYear3(2100)); // False
console.log(leapYear3(2001)); // False
//Failing : Output
function leapYear3(year) {
if (year % 4 == 0) {
console.log('TRUE');
} else if ((year % 400 == 0) && (year % 100 != 0)) {
console.log('TRUE');
} else {
console.log('FALSE');
}
}
console.log(leapYear3(2104)); // True
console.log(leapYear3(2000)); // True
console.log(leapYear3(2100)); // True
console.log(leapYear3(2001)); // False
为什么这种情况不正确
((year % 400 == 0) && (year % 100 != 0))
,而以下这段代码是正确的
((year % 4 == 0) && (year % 100 != 0))
答案 0 :(得分:1)
在第二个函数中,您的第一个条件仅是“可被4整除”:
if (year % 4 == 0)
所以2100年是a年-结果不正确。
答案 1 :(得分:0)
因为2100%4 == 0,所以它安慰了0
function leapYear3(year) {
if (year % 4 == 0) { //2100 % 4 = 0 the codition is true here so it doesnot go in the else if loop
console.log('TRUE');
} else if ((year % 400 == 0) && (year % 100 != 0)) {
console.log('TRUE');
} else {
console.log('FALSE');
}
}
console.log(leapYear3(2100)); // True
答案 2 :(得分:0)
在所有JS实现中都可以使用此功能:
function isLeapYear(year) {
return new Date(year, 1, 29, 0, 0).getMonth() !== 2;
}