对于语句未按预期工作
For statement not working as expected
这里不是太有经验的程序员。
长话短说,我正在尝试制作一个太阳系类型的小东西,当恒星的质量加上行星的质量大于或等于行星到恒星中心的距离除以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>
因此,问题存在于您未包含在帖子中的代码的另一部分。
希望这可能会有所帮助。
相关文章:
- jQuery 语句专注于实时生成的输入
- 与 Angular 1.5 的单向数据绑定类似于双向工作
- 此 JavaScript 代码无法正常工作(if-else 语句)
- JqueryUI,多个ID和else if 语句在可丢弃,我如何让它们工作
- 嵌套于..在JavaScript语句中
- 用于检查文件扩展名不工作的Javascript If语句
- onclick适用于一个按钮,但不适用于'不要为别人工作
- 为什么不'我的if/else语句不能正常工作
- 为什么我的 javascript else 语句停止工作
- 不了解这种返回语句是如何工作的
- 可以't使if-else-jquery语句工作
- Check IF条件返回false,但IF中的语句仍然可以在JavaScript中工作
- Javascript/JQuery嵌套if语句工作不正常
- 对于语句未按预期工作
- 任何类似于 WebSharper 的 Scala 工作
- 如果语句按预期工作,为什么这不行
- Javascript Switch 语句中的默认值仅适用于一种情况,但不适用于两种情况
- Bootstrap's弹出窗口只工作于按钮-不锚或跨度
- 替换为只工作于第一个子元素
- IE9:为什么设置“-ms-transform”;工作于css,但不能与jquery.css()