java 中 Rectangle.contains() 的错误结果
Wrong result from Rectangle.contains() in java
看来Rectangle
中的contains()
方法不包含右下角。
例如下面的代码returns "false";
Rectangle r = new Rectangle(0,0,100,100);
System.out.println(r.contains(100, 100));
引自矩形 API (Java 8):
public Rectangle(int x,
int y,
int width,
int height)
Constructs a new Rectangle whose upper-left corner is specified as (x,y) and whose width and height are
specified by the arguments of the same name.
将宽度和高度与 (0,0) 的起始 Point
一起使用意味着 Rectangle
具有从 (0,0) 到 (99,99) 的点 - 100 像素的宽度和100 像素的高度,基于始终包含在 Rectangle
.
中的给定起始像素 (0,0)
这意味着(100,100)确实不会被包含在构造的Rectangle
中。根据上面的逻辑,(100,100) 将包含在以下内容中(使用 online java compiler 验证):
Rectangle r = new Rectangle(1,1,100,100);
参考文献:
似乎 API 错误地指出“左上角”是 (x,y),而根据接受的答案和我自己的经验,(x,y) 是左下角.
看来Rectangle
中的contains()
方法不包含右下角。
例如下面的代码returns "false";
Rectangle r = new Rectangle(0,0,100,100);
System.out.println(r.contains(100, 100));
引自矩形 API (Java 8):
public Rectangle(int x, int y, int width, int height)
Constructs a new Rectangle whose upper-left corner is specified as (x,y) and whose width and height are specified by the arguments of the same name.
将宽度和高度与 (0,0) 的起始 Point
一起使用意味着 Rectangle
具有从 (0,0) 到 (99,99) 的点 - 100 像素的宽度和100 像素的高度,基于始终包含在 Rectangle
.
这意味着(100,100)确实不会被包含在构造的Rectangle
中。根据上面的逻辑,(100,100) 将包含在以下内容中(使用 online java compiler 验证):
Rectangle r = new Rectangle(1,1,100,100);
参考文献:
似乎 API 错误地指出“左上角”是 (x,y),而根据接受的答案和我自己的经验,(x,y) 是左下角.