В Java оператор &
может принимать различные значения:
&
: Битовый оператор
&&
: Логический оператор
В операторе if if (x == getX() & y == getY()) {
вместо логического оператора &&
вы использовали битовый оператор &
.
Плюс в методе setY
была опечатка, и, как утверждает @alvinalvord, сравнение int
с Integer
может дать неожиданные результаты.
Измените свой код следующим образом, и он будет работать:
public class BoundingBox {
public int x, y, width, height;
public BoundingBox() {
}
public Integer getX() {
return x;
}
public void setX(Integer x) {
this.x = x;
}
public Integer getY() {
return y;
}
public void setY(Integer y) {
this.y = y;
}
public boolean contains(int x, int y) {
return getX().equals(x) && getY().equals(y);
}
}
Альтернативный код
Или, если нет особых причин сохранять переменные Integer
, вы можете изменить код следующим образом:
public class BoundingBox {
public int x, y, width, height;
public BoundingBox(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public boolean contains(int x, int y) {
return getX() == x && getY() == y;
}
}