gpt4 book ai didi

java - 为什么我会收到有关compareTo 方法的错误?

转载 作者:行者123 更新时间:2023-12-01 18:29:41 24 4
gpt4 key购买 nike

我正在尝试理解 compareTo 方法。我编写了这个类 AboutcompareTo,但我陷入了为什么/如何收到此错误的困境? - 代码即将完成。任何人都可以详细解释我做错了什么。谢谢

代码:

public class AboutCompareTo {

public static void main(String[] args) {
Fruit[] fruits = { new Fruit(2), new Fruit(3), new Fruit(1) };
java.util.Arrays.sort(fruits);
}

}

class Fruit implements Comparable<Fruit> {
private double weight;

public Fruit(double weight) {
this.weight = weight;
}

@Override
public int compareTo(Fruit o) {
Fruit f = (Fruit) o;
if (Fruit > o.Fruit) // <-- the error
return 1;
else if ((Fruit < o.Fruit)) // <-- the error
return -1;
else
return 0;

}

}

最佳答案

compareTo 方法将您的类的实例(即此 Fruit)与作为参数传递给您的另一个 Fruit 的实例进行比较。因此,需要在o体重和您自己的体重之间进行比较:

@Override
public int compareTo(Fruit o) {
if (this.weight > o.weight)
return 1;
else if (this.weight < o.weight)
return -1;
else
return 0;
}

注1:我用this.weight来指代这个Fruit的重量。我这样做是为了指出 weight 属性属于该实例;但是,您可以从表达式中省略 this.,即使用 weight > o.weight 代替。

注 2:我假设您这样做是为了学习练习。对于生产代码,Java 类库提供了一个用于比较 double 的预构建方法 - 即 Double.compare。您可以在一行中重写该方法:

@Override
public int compareTo(Fruit o) {
return Double.compare(weight, o.weight);
}

关于java - 为什么我会收到有关compareTo 方法的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com