Неверный результат от Rectangle.contains () в Java - PullRequest
0 голосов
/ 27 апреля 2019

Похоже, что метод contains() в Rectangle не относится к нижнему правому углу.

Например, следующий код возвращает «ложь»;

Rectangle r = new Rectangle(0,0,100,100);
System.out.println(r.contains(100, 100));

1 Ответ

2 голосов
/ 27 апреля 2019

Как указано в API Rectangle (Java 8):

public Rectangle (int x, int y, int width, int height)
Создает новый прямоугольник, левый верхний угол которогозадается как (x, y), ширина и высота которого задаются аргументами с одинаковыми именами.

Использование ширины и высоты с начальными Point из (0,0) означаетRectangle имеет точки от (0,0) до (99,99) - 100 пикселей по ширине и 100 пикселей по высоте на основе заданного начального пикселя (0,0), который всегда включается в Rectangle.

Это означает, что (100,100) действительно не будет включено в построенный Rectangle.Исходя из приведенной выше логики, (100 100) будет содержаться в следующем (проверено с помощью онлайн-компилятора Java ):

Rectangle r = new Rectangle(1,1,100,100);

Ссылки:

...