我正在制作一个非常简单的 Java 程序,用于计算弹丸以不同的角度和速度发射时的行进距离。虽然在谈论发射角度时没有必要包括超过 180 度的角度,但我想知道为什么我的代码没有按照我期望的方式工作,特别是以下部分:
if((int)(angle / 180.0) % 2 != 0)
{
myDataArray[i][j] = 0.0;
}
如果角度是介于 180 和 360(不包括在内)之间的值,那么它应该满足条件,任何等效角度(例如 540 到 720 不包括在内)也应该满足条件。基本上,只要发射角进入地面,距离值应该为零。
代码的其余部分工作正常,但这部分的所有角度值都在 180 及以上,这意味着所有这些距离都为零。(这没有意义,因为 365 度发射角应该与 5 度发射角相同)。
我做错了什么,还是有其他条件可以用来获得预期的结果?
编辑:叹息....计算没有问题,我只是个白痴。我将角度增量器放在 else 语句中,这意味着对于 if 语句为 true 的第一个角度将用于程序的其余部分。这是我拥有的整个方法代码:
public void calcDistanceValues()
{
double angleStart = myAngleDegrees;
double speedStart = mySpeedMPH;
for(int i = 0; i < myNumRows; i++)
{
for(int j = 0; j < myNumColumns; j++)
{
if((int)(myAngleDegrees / 180.0) % 2 != 0)
{
myDataArray[i][j] = 0.0;
}
else
{
myDataArray[i][j] = 5280 * (Math.pow(mySpeedMPH,2)*Math.sin(2*Math.toRadians(myAngleDegrees))/78973);
myAngleDegrees += myUnitIncrement; //the problem is here*
}
}
mySpeedMPH += myUnitIncrement;
myAngleDegrees = angleStart;
}
mySpeedMPH = speedStart;
}