当我正在解决“破解编码面试”一书中的问题时......我有一个疑问。问题是:
给定二维平面上的两个正方形,找到一条将这两个正方形切成两半的线。
解决方案:任何穿过矩形中心的线都必须将其切成两半。因此,如果你画一条连接两个正方形中心的线,它将把两个正方形切成两半。
public class Square {
public double left;
public double top;
public double bottom;
public double right;
public Square(double left, double top, double size) {
this.left = left;
this.top = top;
this.bottom = top + size;
this.right = left + size;
}
public Point middle() {
return new Point((this.left + this.right) / 2,
(this.top + this.bottom) / 2);
}
public Line cut(Square other) {
Point middle_s = this.middle();
Point middle_t = other.middle();
if (middle_s == middle_t) {
return new Line(new Point(left, top),
new Point(right, bottom));
} else {
return new Line(middle_s, middle_t);
}
}
}
但现在的疑问是 cut 方法中的 '==' 运算符来检查它们是否是同一个正方形的点。点是不可变的吗??请帮助我...在此先感谢。