好的,所以我正在为Java类做一个赋值,并且赋值的一部分是找出一个点是否在矩形的维度内.所以我创建了这段代码:
public boolean contains(Point p){
return (this.getLocation().getX() < p.getX() && this.getLocation().getY() < p.getY() &&
this.getLocation().getX() + this.getWidth() > p.getX() &&
this.getLocation().getY() + this.getHeight() > p.getY());
}
Run Code Online (Sandbox Code Playgroud)
我也创建了一个点类,这就是我要求"Point p"参数的原因.为了测试这个布尔值,我在Main类中创建了一个简单的'if'语句:
//check if one rectangle's point is inside another
if (rectangle.contains(rectangle2.getLocation()))
System.out.println("the point is in the rectangle");
Run Code Online (Sandbox Code Playgroud)
该点的位置是(6,7).矩形1的点,宽度和高度分别为(4,5),9和3.我知道这一点是在第一个矩形内部,但println语句没有显示,这意味着我创建的布尔值必定存在问题,但我没有看到错误,也许我的头是阴天但是可能有人指出我这里有什么问题?
PS这是所有控制台工作,我不处理一些GUI或图形编程.
AWT Rectangle已经有了contains方法.(链接)
如果您了解命名空间如何冲突,任务似乎即将发生.例如,如果你是懒惰的(这是程序员最钦佩的品质之一),那么你可以写:
public static class Rectangle {
java.awt.Rectangle _r;
public Rectangle(int x, int y) {
this._r = new java.awt.Rectangle(x, y);
}
public boolean contains(Point p) {
return this._r.contains(p);
}
}
Run Code Online (Sandbox Code Playgroud)
您通常不希望重新实现功能,也不希望扩展类.
我看起来还不错。我会检查您的测试用例是否确实具有您认为的数字;我还会检查您的访问器是否都返回正确的值(我无法告诉您我将 getX() 实现为 {return this.y;} 的次数)。除此之外,这是任何人的猜测。