0

まず最初に、このコードが乱雑で、equals() が完全に間違っている場合は申し訳ありませんが、これを使用するのは初めてです。

2 つの線が等しいかどうかを確認する equals メソッドを作成しようとしています。2 つの端点が同じ場合、2 つの線は等しいと定義されます。

私の最初の質問は、私は Point クラスのメソッドに近いですか? また、Line クラスから Point クラスの equals() メソッドを呼び出すにはどうすればよいですか?

助けてくれてありがとう。

public class Point {

private int x;
private int y;

public Point( int x, int y) {
    this.x = x;
    this.y = y;
}

public int getX() {
    return x;
}
public int getY() {
    return y;
}

public String toString() {
    return "x=" + x + ", y=" + y;
}

public boolean equals(Object o) {
      if (!(o instanceof Point)) {
            return false;
        }
        return (x == ((Point) o).x && y == ((Point) o).y);
}
}

}

戻り値 this.y の場合、「到達不能コード」と表示されます。また、オブジェクトは「点」または「線」にする必要がありますか?

public class Line {
private Point beg, end;
Color color;

public Line(Point beg, Point end, String color) {
    this.beg = beg;
    this.end = end;


public Point getEnd() {
    return end;
}

public Point getBeg() {
    return beg;
}

public Color getColor() {
    return color;
}

public String toString() {
    return "Beg=" + beg + ", End=" + end + ", Color" + color.toString();
}

Line() {
    return this.beg.equals(Point.x);
    return this.end.equals(Point.y);
}

}

point クラスの equals() を更新しましたが、まだ Line クラスから呼び出すのに問題があります。同様の修正でしょうか?

すべての助けをありがとう。

4

8 に答える 8

0

あなたが使用している

return this.x == ((Point)o).x;
return this.y == ((Point)o).y;

このコードは x をチェックした後に戻りますが、y には到達しません。

したがって、コードを正しく機能させるには、

return (this.x == ((Point)o).x)&&(this.y == ((Point)o).y);

このコードは x と y の両方をチェックしてから返します

于 2013-09-05T14:43:21.243 に答える