Java:if语句可以简化(框中包含点)
我有下面的语句来检查Vector2D是否在一个框中,IntelliJ给了我一个警告:“if语句可以简化”Java:if语句可以简化(框中包含点),java,if-statement,compiler-warnings,simplify,Java,If Statement,Compiler Warnings,Simplify,我有下面的语句来检查Vector2D是否在一个框中,IntelliJ给了我一个警告:“if语句可以简化” if(point.xmaxX | | point.ymaxY) 返回false; 我怎样才能简化它?我看不出任何可能的简化。我会忽略这个警告 更新:但是,如果方法如下所示: if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY) return false; retur
if(point.xmaxX | | point.ymaxY)
返回false;
我怎样才能简化它?我看不出任何可能的简化。我会忽略这个警告
更新:但是,如果方法如下所示:
if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY)
return false;
return true;
return new Rectangle(minX, maxX, minY, maxY).contains(point);
if(point.xmaxX | | point.ymaxY)
返回false;
返回true;
您可以将其更改为:
return !(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY);
返回!(点.xmaxX | |点.ymaxY);
甚至:
return point.x >= minX && point.x <= maxX && point.y >= minY && point.y <= maxY;
return point.x>=minX&&point.x=minY&&point.y尝试将其分成两个if语句:一个用于“x”坐标,一个用于“y”
if(point.x
每当IntelliJ警告可能的简化时,它通常会提供执行简化(通过单击黄色灯泡)。如果你那样做会发生什么?也许你可以试试这样的方法:
if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY)
return false;
return true;
return new Rectangle(minX, maxX, minY, maxY).contains(point);
至于从布尔代数的角度简化,你一定在寻找马丁的答案。事实上,您甚至不需要简化它,因为编译器会自动为您完成。例如,!(a和b)
将简化为!a | | |!b
因为单独检查每个变量比创建一个临时变量并检查其值更快。这与OP的要求不同。我的版本中没有灯泡,但有一个可单击的工具提示。谢谢事实确实如此。我在寻找if子句中的简化。这就是我找不到它的原因。我同意你最后的建议;这对我来说更有意义。