Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:if语句可以简化(框中包含点)_Java_If Statement_Compiler Warnings_Simplify - Fatal编程技术网

Java: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

我有下面的语句来检查Vector2D是否在一个框中,IntelliJ给了我一个警告:“if语句可以简化”

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子句中的简化。这就是我找不到它的原因。我同意你最后的建议;这对我来说更有意义。