首页 > 解决方案 > 如何使用 continue 修复循环结果

问题描述

我正在尝试对for带有 if 条件的 10 个问题使用循环。continue用于传递与条件不匹配的那个。

我的目的是随机提出 10 个问题方程,其结果应该是整数,但我的代码只给了我正确的条件和可变数量的问题。

当条件不满足时,它会通过当前方程,因此有时我只有 5 或 7 个问题,因为其他 5 或 3 个没有通过条件。

如何确保生成的随机方程的数量始终相同,以便如果不满足条件,该函数将重做随机数量的动作以结束10 个问题?

我的代码是:

<body>
<p>this is testing for random number meet creteria</p>

<button class = "button" onclick = "myFunction()">try me</button>

<p id = "demo">Thisis where to display question</p>

<script>
    function myFunction() {
        var quiz = "";
        var xNumber;
        var yNumber;
        var sign = ["+", "-", "*", "/"];
      
        for (var i=0; i<10; i++) {
            var xNumber = Math.floor(Math.random()*10);
            var yNumber = Math.floor(Math.random()*10);
            var randomSign = sign[Math.floor(Math.random()*sign.length)];
            var result = eval(xNumber + randomSign + yNumber);

            if (Number.isInteger(result)) {
                quiz += xNumber + randomSign + yNumber + "<br>";
            } else {
                continue;
            }
        }            
        document.getElementById("demo").innerHTML = quiz;  
    }
</script>

标签: javascriptfor-loopif-statement

解决方案


将循环更改为以获取所需项目数为条件。

var numQuestions = 10, counter = 0
while (counter < numQuestions) {
            var xNumber = Math.floor(Math.random()*10);
            var yNumber = Math.floor(Math.random()*10);
            var randomSign = sign[Math.floor(Math.random()*sign.length)];
            var result = eval(xNumber + randomSign + yNumber);

            if (Number.isInteger(result)) {
                quiz += xNumber + randomSign + yNumber + "<br>";
                // increment your counter here since you've added another question
                counter ++;
            } 
        } 

推荐阅读