向用户询问号码。确定数字是偶数还是奇数。我已经设置了常量,并使用模来解决这个问题。但是,我陷入了无限循环,无法弄清原因。我的循环中有if语句,还有break语句可以退出,但仍然处于无限循环中。
必须使用整个循环
// declare constants
const MODULO = 2;
const EVEN = 0;
const ODD = 1;
// declare variables
var enteredNumber;
var result;
// prompt user to enter an even number
enteredNumber = prompt("Enter an even number: ");
// convert user input into a number
enteredNumber = Number(enteredNumber);
// determine result of modulo equation
result = enteredNumber % MODULO;
// while loop to check if enteredNumber is even or odd
while (result === EVEN) {
document.write(enteredNumber + " is an even number <br/>");
enteredNumber = prompt("Enter an even number: ");
enteredNumber = Number(enteredNumber);
result = enteredNumber % MODULO;
if (result === ODD) {
document.write(enteredNumber + " isn't an even number");
break;
}
}
答案 0 :(得分:0)
从本质上讲,您可以将这个东西一线化。您已经在使用while
进行检查了。
document.addEventListener('DOMContentLoaded', () => {
while (!(parseInt(window.prompt('Enter an even number', '2') || '1', 10) % 2)) { };
});
为什么有效
Javascript具有“虚假”和“真实”值。
window.prompt('Enter an even number', '2')
此代码提示用户输入数字。结果为字符串(如果用户清空提示,则为null)。
<a string or null> || '1'
如果用户清除了提示,它将返回null
。在Javascript中,我们可以使用或运算符在两件事之间进行选择。 null || '1'
从左到右读取。第一件事是虚假的,因此选择'1'
。
如果用户输入数字(如10),我们将获得他们输入的作为字符串的数字。
然后,我们使用parseInt
将字符串解析为数字。
获取该结果,然后使用取模运算符%
除以操作数,然后返回余数。当您除以2时,余数将为0
或1
。这些是虚假/真实的价值观。
while(0)
计算为false并中断循环。 while(1)
的计算结果为true,然后继续循环。