我有以下 JavaScript 代码:
var expressionBuilder = function() {
var firstNumber = getRandomInt(1, 10);
var secondNumber = getRandomInt(1, 10);
var operand = getRandomOperator();
if (operand === '-') {
do {
firstNumber = getRandomInt(1, 10);
secondNumber = getRandomInt(1, 10);
} while (firstNumber < secondNumber);
}
if (operand === '/') {
do {
firstNumber = getRandomInt(1, 10);
secondNumber = getRandomInt(1, 10);
} while (firstNumber < secondNumber && ((firstNumber / secondNumber) % 0.5) != 0);
}
return firstNumber + ' ' + operand + ' ' + secondNumber;
};
这是非常不言自明的。除法位应该生成数字,这样我只能得到除法结果,如 0.5、1、1.5 等:
((firstNumber / secondNumber) % 0.5) != 0
即可以被 1/2 整除。然而,我仍然得到像 8/7 这样的表达。为什么?
最佳答案
看起来像是对 &&
的简单误解与 ||
在这一行:
while (firstNumber < secondNumber && ((firstNumber / secondNumber) % 0.5) != 0);
仅当两个语句的计算结果均为 true 时,循环才会继续。让我们拿你的8/7
示例:
while (8 < 7 && ((8 / 7) % 0.5) != 0);
8 < 7
计算结果为false
。因此,循环不会继续,并且这些数字已设置。
你真的想要||
;如果其中任何一个陈述为真,您希望它继续下去。两者都不是。
while (firstNumber < secondNumber || ((firstNumber / secondNumber) % 0.5) != 0);
关于JavaScript - 生成两半的除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832959/