[英]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 时,余数将为0
或1
。 这些是虚假/真实值。
while(0)
计算结果为 false 并中断循环。 while(1)
计算结果为 true 并继续循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.