我有以下语句来检查Vector2D是否在一个框内,并且IntelliJ给了我一个警告:“if if statement可以简化。”
if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY)
return false;
我该如何简化?
答案 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
,因为分别检查每个变量更快,而不是创建临时变量并检查其值。