当它找到正确答案时如何停止循环?

时间:2014-08-08 06:31:14

标签: javascript

我正在尝试制作一个射弹计算器,所以它真的需要改变再次计算的方式。再一次,直到它完成。

但现在我遇到了一个问题...... :(

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”代替角度

  1. 请查看[ ** HELP ** ]这就是问题...我想在计算等于“范围”后停止此循环但我真的不知道这样做:(

  2. 在我得到正确的“i”后,我怎么打印才能显示答案?

  3. 或者无论如何使这段代码更好或更快地计算?

    Ty为每一个帮助:)

3 个答案:

答案 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中的continuereturn false将等于break。由于您使用简单的for循环,因此只需使用return false来打破此循环。