我正在尝试制作一个射弹计算器,所以它真的需要改变再次计算的方式。再一次,直到它完成。
但现在我遇到了一个问题...... :(
var Height = Number(document.getElementById("Height").value);
var Velocity = Number(document.getElementById("Velocity").value);
var Range = Number(document.getElementById("Range").value);
var First = ((((Math.SQRT2 * Velocity) + (Math.sqrt(19.6) * Velocity * Height)) * Math.cos(0.785398163)) / 9.8);
document.getElementById("First").innerHTML = First;
if(First < Range)
document.getElementById("show").innerHTML = "Need more velocity to success on this range";
else
{
for(var i = -1.570796327; [>>>****HELP****<<<] ; i+0.000000001)
{
((((Velocity * Math.sin(i)) + Math.sqrt(Velocity * Math.sin(i) * Velocity * Math.sin(i) - 19.6 * Height))) / 9.8) * Velocity * Math.cos(i))
}
}
所有这些代码都是为了找到一个正确的射弹射击角度,我用“i”代替角度
请查看[ ** HELP ** ]这就是问题...我想在计算等于“范围”后停止此循环但我真的不知道这样做:(
在我得到正确的“i”后,我怎么打印才能显示答案?
或者无论如何使这段代码更好或更快地计算?
Ty为每一个帮助:)
答案 0 :(得分:1)
如果达到预期值/范围,可以使用break退出循环。您还可以检查您的结果是否接近您的范围+/-一个值,因为您可能无法获得与您为Range定义的完全相同的值。
for(var i = -1.570796327; i < MaxValue ; i+0.000000001)
{
result = ((((Velocity * Math.sin(i)) + Math.sqrt(Velocity * Math.sin(i) * Velocity * Math.sin(i) - 19.6 * Height))) / 9.8) * Velocity * Math.cos(i));
if(result >= Range) break;
}
答案 1 :(得分:0)
使用此处打破
if "condition fullfilled inside for-loop"
return false;
要打印它,为什么不使用:
console.log(i);
答案 2 :(得分:-1)
在jquery和js中,如果你使用循环(for,while,$ .each)而不是return true
将等于PHP中的continue
,return false
将等于break
。由于您使用简单的for
循环,因此只需使用return false
来打破此循环。