对于语句未按预期工作

For statement not working as expected

本文关键字:工作 于语句 语句      更新时间:2023-09-26

这里不是太有经验的程序员。

长话短说,我正在尝试制作一个太阳系类型的小东西,当恒星的质量加上行星的质量大于或等于行星到恒星中心的距离除以2时,行星应该落入恒星。

for(i = 0; i < planetamount; i++){
    if((starmass+planetmass[i]) >= (initialradius/2)){
        radius[i]--;
    }
}
在这种情况下,行星

数量等于1,因为我只有一个行星。带有变量 i 的数组括号表示它正在获取哪个行星的数据(只有一个可用,行星 0)。现在,奇怪的部分。

starmass = 100;
planetmass = [10];
radius = [150];
initialradius = radius[0];

那么,让我们检查一下;

starmass + planetmass = 100 + 10 = 110
initialradius/2 = 150/2 = 75

正如我们可以明显看到的,110 大于或等于 75(在本例中大于),但行星并没有落入恒星(是的,它是一个不断更新的画布动画,所以它应该可以工作,它之前出于某种原因做到了)。半径[0] 的值不会改变。也许这个 for 循环在 requestAnimationFrame() 函数中的信息可能会有所帮助。

我真的希望这不会太令人困惑(可能是这样),但如果有人能给我一个简单的答案,那就太好了。

-JReesW

查看它在循环中迭代了多少次。

我可能对你的目标有误,但试一试,告诉我你的想法:

for(var i = 0; i < planetamount; i++){
    if((starmass+planetmass[i]) >= (initialradius/2)){
        while(radius[i]>0) { radius[i]--; }
    }
}

函数本身按预期工作良好:在第一次(也是唯一一次)迭代后,它返回 radius[0] 值 149(即 150 减去 1)。以下是测试代码段:

<!DOCTYPE html>
<html>
<body>
<p id="radius0"></p>
<script>
        starmass = 100;
        planetmass = [10];
        radius = [150];
        initialradius = radius[0];
        planetamount=1;
        function test() {
            for (i = 0; i < planetamount; i++)
            {
                if ((starmass + planetmass[i]) >= (initialradius / 2))
                {
                    radius[i]--;
                }
            }
            return radius[0];
        }
        document.getElementById("radius0").innerHTML = test();
</script>
</body>
</html>

因此,问题存在于您未包含在帖子中的代码的另一部分。

希望这可能会有所帮助。