2013-10-17 7 views

答えて

11

私は単純化の可能性はありません。私は警告を無視します。


更新:あなたは方法は次のようになり場合しかし、:

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

あるいは:

return point.x >= minX && point.x <= maxX && point.y >= minY && point.y <= maxY; 

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

あなたはこれにそれを変更する場合があります

I dこれが人間にとって単純化されているかどうかは分かりません。

+0

これは事実です。私はif節の内部を簡素化してみました。それが私がそれを見つけることができなかった理由です。私はあなたの最後の提案に行った。それは私にはもっと意味がありました。 – kiel814

0

2つのif文に分割してください.1つは "x"座標用、もう1つは "y"用です。

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

これは、OPが求めているものと同等ではありません。 – Smit

3

のIntelliJが可能簡素化を警告するたびに、それは多くの場合(黄色の電球をクリックすることで)簡素化を実行するために提供しています。もしあなたがそうすればどうなりますか?

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

限りブール代数の観点から簡素化して、あなたがマーティンの答えを探している必要があります。

+0

私のバージョンには電球はありませんでしたが、クリック可能なツールチップがありました。ありがとう! – kiel814

+0

ありがとうございます...それは私のために働く –

0

たぶん、あなたはこのような何かを試みることができます。実際には、コンパイラが自動的にそれを行うので、単純化する必要はありません。たとえば、!(a && b)は、!a || !bに簡素化されます。これは、一時変数を作成し、その値をチェックするのではなく、各変数を個別にチェックする方が早いからです。

関連する問題