【发布时间】:2017-09-30 05:36:30
【问题描述】:
创建一个名为“Circle”的 Java 类,该类实现 java.io.Serializable 接口并根据半径对圆进行建模。半径不能小于零。实现半径的getter和setter方法。还包括在 circle 类中覆盖 toString 。创建类的比较器,用于比较两个 Circle 类型的对象。
这是我目前所拥有的
import java.io.Serializable;
public class Circle implements Serializable, Comparable<Circle> {
private int radius = 1;
public Circle() {
}
public Circle(int radius) {
setRadius(radius);
}
public void setRadius(int v) {
if (v > 0) {
this.radius = v;
}
}
public int getRadius() {
return this.radius;
}
@Override
public String toString() {
return "Circle{" + "radius=" + radius + '}';
}
@Override
public int compareTo(Circle o) {
//no idea what to put here
}
}
这是我的比较器类
import java.util.Comparator;
public class CompareCircle implements Comparator<Circle> {
CompareCircle(Circle c1, Circle c2) {
}
@Override
public int compare(Circle o1, Circle o2) {
if (o1.getRadius() > o2.getRadius()) {
return o1.getRadius();
} else {
return o2.getRadius();
}
}
}
我的问题是我做对了吗?
【问题讨论】:
-
不,你没有。阅读 Comparator 的 javadoc 以了解它的用途,以及它的 compare() 方法应该返回什么。不要实现 Comparable 是您使用 Comparator 来比较圆圈。
-
//不知道放什么 - 你可以写'return Integer.comapre(this.getRadius(), o.getRadius())'
标签: java compare comparator comparable