繁体   English   中英

奇数或偶数的while循环

[英]While loop for odd or even

向用户询问号码。 确定数字是偶数还是奇数。 我设置了常量并使用模数来解决这个问题。 但是,我陷入了无限循环,无法弄清楚原因。 我在循环中有 if 语句以及要退出的 break 语句,但仍处于无限循环中。

必须使用 while 循环

 // 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; } }

你基本上可以单行这件事。 你已经在用while检查东西了。

 document.addEventListener('DOMContentLoaded', () => { while (!(parseInt(window.prompt('Enter an even number', '2') || '1', 10) % 2)) { }; });

为什么这有效

Javascript 有 'falsy' 和 'truthy' 值。

window.prompt('Enter an even number', '2')

此代码提示用户输入一个数字。 结果是一个字符串(或 null,如果用户将提示置为空白)。

<a string or null> || '1'

如果用户取消提示,它将返回null 在 Javascript 中,我们可以使用or运算符在两件事之间进行选择。 null || '1' null || '1'从左到右读取。 第一件事是假的,所以它选择'1'

如果用户输入了一个数字(比如 10),我们会得到他们输入的数字作为字符串。

然后我们使用parseInt将字符串解析为一个数字。

获取该结果并使用运算符%除以操作数并返回余数 当您除以 2 时,余数将为01 这些是虚假/真实值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM