JavaScript - 生成两半的除法

标签 javascript if-statement do-while modulus

我有以下 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/

相关文章:

javascript - 防止 jQuery 在元素移除时取消绑定(bind)事件

Javascript/HTML 语法格式错误

swift - 如果(变量 == 变量 + 5)

javascript - 循环提示用户直到有效输入

javascript - JQuery appendTo() 到 html() 以允许替换

javascript - 为什么 HTML 5 没有内置可编辑的组合框或本地菜单?

c++ - 为什么我的 If-Else 永远不会评估为真?

python - "if"基于命令的语句?

java - while 循环似乎在完成循环之前重复步骤?

java - do-while 循环不继续