While循环为奇数或偶数

时间:2018-11-14 22:23:50

标签: javascript html

向用户询问号码。确定数字是偶数还是奇数。我已经设置了常量,并使用模来解决这个问题。但是,我陷入了无限循环,无法弄清原因。我的循环中有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;
  }
}

1 个答案:

答案 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时,余数将为01。这些是虚假/真实的价值观。

while(0)计算为false并中断循环。 while(1)的计算结果为true,然后继续循环。