gpt4 book ai didi

Java - 修改后的 compareTo 方法说它需要返回一个 int,但它应该返回一个

转载 作者:搜寻专家 更新时间:2023-10-31 20:03:59 24 4
gpt4 key购买 nike

我现在正在学习基本的 Java,我的代码有一个我无法弄清楚的问题。这基本上就是标题所说的。我的 Java 编译器告诉我我的自定义 compareTo 方法有错误,说它需要返回一个 int。问题是,据我所知,它正在返回一个 int。但它仍然给我一个错误。有人可以在我的代码中指出错误吗?而且我已经在类里面实现了 Comparable。这是我的方法:

public int compareTo(Homework other) {
if (getDaysLate() < other.getDaysLate()) {
return -1;
} else if ((dateSubmitted == other.dateSubmitted)
&& (files.compareTo(other.files) == -1)) {
return -1;
} else if ((dateSubmitted == other.dateSubmitted)
&& (files == other.files)) {
if (name.compareTo(other.name) == -1) {
return -1;
} else if (name.compareTo(other.name) == 1) {
return 1;
} else if (name.compareTo(other.name) == 0) {
return 0;
}
} else {
return 0;
}
}

最佳答案

第三个 else 中有一条路径不返回任何内容。

 else if ((dateSubmitted == other.dateSubmitted) && (files == other.files)) {
if (name.compareTo(other.name) == -1) {
return -1;
}
else if (name.compareTo(other.name) == 1) {
return 1;
}
else if (name.compareTo(other.name) == 0) {
return 0;
} else return ...
}

顺便说一句,我不确定我是否遵循了您的实现逻辑,因为如果 dateSubmitted != other.dateSubmitted,您似乎返回了 0。 compareTo 也应该是反对称的(即 sgn(x.compareTo(y)) == -sgn(y.compareTo(x))),但是你的实现是不是。

关于Java - 修改后的 compareTo 方法说它需要返回一个 int,但它应该返回一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288191/

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