Javascript 中使用嵌套 if-else 的闰年问题
Leap year Question in Javascript using nested if-else
在嵌套的if语句中,我已经给出了所有的条件。但是有些闰年没有显示为闰年。例如:2000 年是闰年,但 2016 年、2020 年不被视为闰年。请帮助。
var y = prompt("Enter the year");
if (y % 4 === 0) {
if (y % 100 === 0) {
if (y % 400 === 0) {
alert(y + " is a leap year");
} else {
alert(y + " is not a leap year");
}
} else {
alert(y + " is not a leap year");
}
} else {
alert(y + " is not a leap year");
}
逻辑错误。我不太清楚为什么你需要检查 y%100===0
和 y%400===0
我以为y%4===0
已经足够检查闰年了
但是我可以告诉你2016年肯定过不了y%100===0
条件
因为 2016 除以 100 余数 16
日期处理的数学已经在 JavaScript 中。应该可以使用类似“let Dt = DateSerial(year, 2, 29); let isleapyear = Dt.getDate() == 29;
如果年份可以被100整除,你需要检查年份是否也可以被400整除。但是你缺少的是,如果年份不能被 100 整除但可以被 4 整除,那么它已经是闰年了。所以你需要像下面这样编辑你的代码:
if (y % 4 === 0) {
if (y % 100 === 0) {
if (y % 400 === 0) {
alert(y + " is a leap year");
} else {
alert(y + " is not a leap year");
}
} else {
//if year is divisible by 4 but not 100, it is a leap year
alert(y + " is a leap year");
}
} else {
alert(y + " is not a leap year");
}
// program to check leap year
function checkLeapYear(year) {
//three conditions to find out the leap year
if ((0 == year % 4) && (0 != year % 100) || (0 == year % 400)) {
console.log(year + ' is a leap year');
} else {
console.log(year + ' is not a leap year');
}
}
// take input
const year = prompt('Enter a year:');
checkLeapYear(year);
没有办法绕过“思考”和测试。以下应该有效:
for (let y=1995;y<2111;y++)
console.log(y,
!(y%4) && !(!(y%100) && (y%400))
)
使用 if-else 语句的非常简单的解决方案
function isLeap(year) {
if (year % 4 === 0 || year % 400 === 0){
console.log("Leap Year");
}
else if (year % 100 === 0){
console.log("Not Leap Year");
}
else {
console.log("Not Leap Year");
}
}
//and then call the function
isLeap(2024);
在嵌套的if语句中,我已经给出了所有的条件。但是有些闰年没有显示为闰年。例如:2000 年是闰年,但 2016 年、2020 年不被视为闰年。请帮助。
var y = prompt("Enter the year");
if (y % 4 === 0) {
if (y % 100 === 0) {
if (y % 400 === 0) {
alert(y + " is a leap year");
} else {
alert(y + " is not a leap year");
}
} else {
alert(y + " is not a leap year");
}
} else {
alert(y + " is not a leap year");
}
逻辑错误。我不太清楚为什么你需要检查 y%100===0
和 y%400===0
我以为y%4===0
已经足够检查闰年了
但是我可以告诉你2016年肯定过不了y%100===0
条件
因为 2016 除以 100 余数 16
日期处理的数学已经在 JavaScript 中。应该可以使用类似“let Dt = DateSerial(year, 2, 29); let isleapyear = Dt.getDate() == 29;
如果年份可以被100整除,你需要检查年份是否也可以被400整除。但是你缺少的是,如果年份不能被 100 整除但可以被 4 整除,那么它已经是闰年了。所以你需要像下面这样编辑你的代码:
if (y % 4 === 0) {
if (y % 100 === 0) {
if (y % 400 === 0) {
alert(y + " is a leap year");
} else {
alert(y + " is not a leap year");
}
} else {
//if year is divisible by 4 but not 100, it is a leap year
alert(y + " is a leap year");
}
} else {
alert(y + " is not a leap year");
}
// program to check leap year
function checkLeapYear(year) {
//three conditions to find out the leap year
if ((0 == year % 4) && (0 != year % 100) || (0 == year % 400)) {
console.log(year + ' is a leap year');
} else {
console.log(year + ' is not a leap year');
}
}
// take input
const year = prompt('Enter a year:');
checkLeapYear(year);
没有办法绕过“思考”和测试。以下应该有效:
for (let y=1995;y<2111;y++)
console.log(y,
!(y%4) && !(!(y%100) && (y%400))
)
使用 if-else 语句的非常简单的解决方案
function isLeap(year) {
if (year % 4 === 0 || year % 400 === 0){
console.log("Leap Year");
}
else if (year % 100 === 0){
console.log("Not Leap Year");
}
else {
console.log("Not Leap Year");
}
}
//and then call the function
isLeap(2024);