首页 > 解决方案 > 尺寸比较(周长/平方周长)等

问题描述

3 不同classes的 1 用于处理Circle实例,1 用于Square实例,第 3 用于comparrisons它们之间(main)。在main函数中,我找到circle(between c1..c4) 和square(between s1...s5) 并打印biggest circumference and area of them respectively. [so circle-circle and square-square comparison]

!!!!注意:只有具有较大半径或边的那些具有最大的周长或面积,所以我只使用r和如果我使用/a是否可以返回(不,因为那我只会处理数字?).请纠正我。thisareacircumference

现在我想geometric shapebiggest perimeter. 我怎样才能做到这一点 ?我在哪里比较?新课?[方圆比较]

public class Circle {
        public double x,y,r;
        public double circumference() {
            return 2*(3.14)*r;
        }
        public double area() {
            return 3.14*r*r;
        }
        public Circle bigger(Circle c){
            if(c.r>r) return c; else return this; 
        } 
        public Circle(double x, double y, double r) {
            this.x=x; 
            this.y=y; 
            this.r=r;
        }
    }

public class Square {
    public double x,y,a;
    public double perimeter() {
        return 4*a;
    }
    public double area() {
        return a*a;
    }
    public Square bigger(Square s){
        if(s.a>a) return s; else return this; 
    } 
    public Square(double x, double y, double a) {
        this.x=x; 
        this.y=y; 
        this.a=a;
    }
}

public class CircleAndSquareTest {

    public static void main(String[] args) {
        Circle c1 = new Circle(0.0,0.0,1.0);
        Circle c2 = new Circle(1.0,0.0,2.0);
        Circle c3 = new Circle(0.0,2.0,4.0);
        Circle c4 = new Circle(1.0,3.0,1.0);
        Circle cb = c1.bigger(c2).bigger(c3).bigger(c4);
        System.out.println("The circle with the biggest circumference has:\n");
        System.out.println("x-axis value: " + cb.x + " y-axis value: " + cb.y + " radius: " + cb.r+"\n");

        Square s1 = new Square(0.0,0.0,1.0);
        Square s2 = new Square(0.0,0.0,1.0);
        Square s3 = new Square(0.0,0.0,5.0);
        Square s4 = new Square(4.0,2.0,2.0);
        Square s5 = new Square(0.0,0.0,1.0);
        Square sb = s1.bigger(s2).bigger(s3).bigger(s4).bigger(s5);
        System.out.println("The square with the biggest area has:\n");
        System.out.println("x-axis value: " + sb.x + " y-axis value: " + 
        sb.y + " side: " + sb.a);
    }
}

标签: java

解决方案


首先声明一个基本接口,可能称为 Shape,它定义了一个方法getPerimeterLength()例如。

让所有形状类实现该接口和相应的方法。

现在,Square 也是 Shape,Circle 也是。然后你可以将所有这些对象放入一个 Shape 数组中。您迭代该数组,并确定具有最大周长长度的条目。然后您只需对该对象调用toString()即可。因为您还覆盖了所有类中的toString()方法以打印每个类内部具有的(不同的!)详细信息。


推荐阅读