Java:if语句可以简化(box包含点)

时间:2013-10-17 18:15:29

标签: java if-statement compiler-warnings simplify

我有以下语句来检查Vector2D是否在一个框内,并且IntelliJ给了我一个警告:“if if statement可以简化。”

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

我该如何简化?

4 个答案:

答案 0 :(得分:14)

我没有看到任何可能的简化。我会忽略这个警告。


更新:但是,如果您的方法如下所示:

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

您可以将其更改为:

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;

我不知道这对人类是否“简化”。

答案 1 :(得分:3)

每当IntelliJ警告可能的简化时,它通常会提供简化(通过单击黄色灯泡)。如果你这样做会怎么样?

答案 2 :(得分:0)

尝试将其分成两个if语句:一个用于“x”坐标,一个用于“y”。

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

答案 3 :(得分:0)

也许你可以尝试这样的事情:

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

至于从布尔代数的角度简化,你必须寻找马丁的答案。实际上,您甚至不需要简化它,因为编译器会自动为您执行此操作。例如,!(a && b)将简化为!a || !b,因为分别检查每个变量更快,而不是创建临时变量并检查其值。