将 Circle 类改成可比较的)改写程序清单 13-2(参见教材 P426) 中的 Circle 类,它继承自 GeometricObject 类并实现 Comparable 接口。覆盖 Object 类中的equals 方法。当两个Circle 对象半径相等时,则这两个 Cir
时间: 2023-06-15 17:05:23 浏览: 147
CircleTest_java_设计一个circle_点类_圆类_
5星 · 资源好评率100%
cle 对象相等。在主方法中创建一个数组来存储五个 Circle 对象。使用 java.util.Arrays 类的 sort 方法对这个数组进行排序,然后使用 for 循环显示这些圆的半径和面积。
下面是改写后的代码:
```java
public class Circle extends GeometricObject implements Comparable<Circle> {
private double radius;
public Circle() {
}
public Circle(double radius) {
this.radius = radius;
}
public Circle(double radius, String color, boolean filled) {
this.radius = radius;
setColor(color);
setFilled(filled);
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
return radius * radius * Math.PI;
}
public double getDiameter() {
return 2 * radius;
}
public double getPerimeter() {
return 2 * radius * Math.PI;
}
@Override
public boolean equals(Object o) {
if (o instanceof Circle) {
return radius == ((Circle) o).getRadius();
}
return false;
}
@Override
public int compareTo(Circle c) {
if (radius > c.getRadius()) {
return 1;
} else if (radius < c.getRadius()) {
return -1;
} else {
return 0;
}
}
}
```
在主方法中创建一个数组来存储五个 Circle 对象, 并使用 `Arrays.sort()` 方法对这个数组进行排序。然后使用 for 循环显示这些圆的半径和面积。
```java
public static void main(String[] args) {
Circle[] circles = {new Circle(3.0), new Circle(2.0), new Circle(5.0), new Circle(1.0), new Circle(4.0)};
Arrays.sort(circles);
for (Circle c : circles) {
System.out.println("Radius: " + c.getRadius() + ", Area: " + c.getArea());
}
}
```
阅读全文