5

Vector2D がボックス内にあるかどうかを確認する次のステートメントがあり、IntelliJ から警告が表示されます:「if ステートメントを簡略化できます」。

if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY)
    return false;

これをどのように単純化できますか?

4

4 に答える 4

4

IntelliJ が簡略化の可能性を警告するときはいつでも、(黄色の電球をクリックして) 簡略化を実行することを提案することがよくあります。そんなことしたらどうなるの?

于 2013-10-17T18:26:08.827 に答える
0

「x」座標用と「y」用の 2 つの if ステートメントに分けてみてください。

if(point.x < minX || maxX < point.x)
    return false;
else if(point.y < minY || maxY < point.y)
    return false;
于 2013-10-17T18:26:04.180 に答える
0

たぶん、次のようなことを試すことができます:

return new Rectangle(minX, maxX, minY, maxY).contains(point);

ブール代数の観点から単純化する限り、マーティンの答えを探しているに違いありません。実際、単純化する必要さえありません。コンパイラーが自動的にそれをやってくれるからです。たとえば、一時変数を作成してその値を確認するのではなく、各変数を個別に確認する方が速いため、次の!(a && b)ように単純化されます。!a || !b

于 2013-10-17T18:26:19.273 に答える