0

コードで何か間違ったことをしたかどうかはわかりません。三角形クラスをテストしていて、何らかの理由で三角形コンストラクターの cornerC が x を y に切り替えます。

public class TriangleIsosceles {
    private Point cornerA;
    private Point cornerB;
    private Point cornerC;
    private int x1;
    private int y1;
    private int x2;
    private int y2;
    private int x3;
    private int y3;

    public TriangleIsosceles(){
        cornerA = new Point(x1,y1);
        cornerB = new Point(x2,y2);
        cornerC = new Point(x3,y3);
    }

    public TriangleIsosceles(int X1,int Y1,int X2,int Y2,int X3,int Y3){
        x1 = X1;
        y1 = Y1;
        x2 = X2;
        y2 = Y2;
        x3 = X3;
        y3 = Y3;

        cornerA = new Point(X1,Y1);
        cornerB = new Point(X2,Y2);
        cornerC = new Point(X3,Y3);
    }

    public boolean isIsosceles(){
        double lengthAB = Math.sqrt(Math.pow(x1-x2,2) + Math.pow(y1-y2,2));
        double lengthBC = Math.sqrt(Math.pow(x2-x3,2) + Math.pow(y2-y3,2));
        double lengthCA = Math.sqrt(Math.pow(x3-x1,2) + Math.pow(y3-y1,2));

        boolean isIsosceles = false;
        if(lengthAB == lengthBC || lengthBC == lengthCA || lengthCA == lengthAB){
            isIsosceles = true;
        }
        System.out.println(lengthAB);
        System.out.println(lengthBC);
        System.out.println(lengthCA);
        return isIsosceles;
    }
}

私のテスタークラスで私が試し
TriangleIsosceles t2 = new TriangleIsosceles(0, 0, 0, 10, 0, 5); System.out.println(t2.isIsosceles());
た出力は
10.0
5.0
5.0
trueでした

でもやってみると

TriangleIsosceles t2 = new TriangleIsosceles(0, 0, 0, 10, 5, 0);
        System.out.println(t2.isIsosceles());


出力は
10.0
10.295630140987
5.0990195135927845
falseです。

4

1 に答える 1

2

最初のテストでは、実際には三角形が作成されません。3 つの点 (0,0)、(0,10)、および (0,5)。それらはすべて同じ平面上に X 座標を持っています - これは線です。したがって、三角形クラスはそれが有効な三角形であることを検証しないため、 に対して true を返す行で終了しますisIsoceles

2 番目の三角形は実際には二等辺三角形ではありません。点は (0,0)、(0,10)、(5,0) で、2 つの等しい辺はありません。

于 2013-02-20T02:22:51.523 に答える