0

最初のコード ブロックは、メイン プログラムの静的メソッドにあります。
このメイン プログラムでは、ポリゴンを設定し、その領域も後で印刷する getArea() メソッドで検出されますが、データを印刷した後にこの setArea() メソッドを使用して、compareTo() メソッドをテストしています。
2 番目のブロックは、Compariable を実装する Polygon クラスでオーバーライドされた compareTo です。
setArea() メソッドがエリアを更新しないのはなぜですか?
静的な問題かもしれないと思っていますが、よくわかりませんか?

public static void printPolyData(){

    try{


        for(int i=0;i<=poly_count-1;i++){

        System.out.println("polygon #" + (i+1)); 
        System.out.println(poly_list.get(i).getSides() + " sides");
        System.out.println(poly_list.get(i).arrayToString());
        System.out.println("Area of Polygon = " + poly_list.get(i).getArea());
        System.out.println("Area of Polygon = " + poly_list.get(i).dListToString());


        }




                poly_list.get(0).setArea(0.00090);
                poly_list.get(1).setArea(0.00094);
                poly_list.get(2).setArea(0.000901);


                System.out.println("Comparing polygon0 (Area=" 
                + poly_list.get(0).getArea() + ") with polygon1 (Area=" 
                + poly_list.get(1).getArea() + ") : " +
                + poly_list.get(0).compareTo(poly_list.get(1)));

                System.out.println("Comparing polygon1 (Area=" 
                + poly_list.get(1).getArea() + ") with polygon0 (Area=" 
                + poly_list.get(0).getArea() + ") : " +
                + poly_list.get(1).compareTo(poly_list.get(0)));

                System.out.println("Comparing polygon0 (Area=" 
                + poly_list.get(0).getArea() + ") with polygon2 (Area=" 
                + poly_list.get(2).getArea() + ") : " +
                + poly_list.get(0).compareTo(poly_list.get(2)));


    }
    catch (Exception e){

        System.out.println("error printing polygon data. " + e.getMessage());

    }


}




 @Override
    public int compareTo(Polygon otherPoly) {



        double otherPolysArea = otherPoly.getArea(); 
        final double error = 0.00005;

        // otherPoly is bigger. current polygon smaller.
        if((this.getArea() - otherPolysArea) < -error){

            return -1;
        }
        // otherPoly is smaller. current polygon bigger.
        else if((this.getArea() - otherPolysArea) > error){

            return 1;
        }
        else{return 0;} // polygons are considered same.

    }

public void setArea(double area){


    this.area = area;

}

ポリゴン0(面積=2.0)とポリゴン1
(面積=1.0)を比較:1 ポリゴン1(面積=1.0)とポリゴン0(面積=2.0)を比較:-1
ポリゴン0(面積=2.0)とポリゴン2(面積=1.5)を比較:1

4

0 に答える 0