具有正数和负数的RangeCheck

时间:2012-12-09 17:50:35

标签: java math while-loop range-checking

我正在开发一款有图表的小游戏。我的想法是我做了一个动作,而目标位置(由上限和下限指定)没有达到(在0.5之内)。例如,如果我定位(7,7),当x和y(在这种情况下都是)在6.5和7.5之间时,循环应该停止。

然而,当出现负数时,出现以下情况时会出现问题:

while ((X < tarX-0.5 || X > tarX+0.5) && (Y < tarY-0.5 || Y > tarY+0.5))

例如:如果我有目标(-7,-7),那么当一个x或y值在范围内时,循环将停止,而不是两者。

基本上,根据x或y是否为正,我有了四个不同循环的想法。但我想知道是否有更简单的方法? (我确实尝试使用Math.abs()来抵消负数,这些数字起作用但是(-3,-3)的某些东西仍然可以停在(3,3)处。

1 个答案:

答案 0 :(得分:0)

  当x和y(在这种情况下都是)在6.5和7.5之间时,

循环应该停止。

while (!(x >= 6.5 && x <= 7.5 && y >= 6.5 && y <= 7.5)) {
   ...
}

应用De Morgan's Law,上述内容相当于

while (x < 6.5 || x > 7.5 || y < 6.5 || y > 7.5) {
   ...
}