Gai*_*erd 2 java return-type return-value compareto
我正在为我的计算机科学课程做一项作业,要求我实现一个 Comparable 接口。
我们没有详细讨论接口,只是被告知它比较两个对象并返回小于、大于和等于,但实际上就是这样,这令人沮丧。
我打算对它做更多的研究,但现在我发现我很困惑为什么我的 compareTo() 方法的实现不起作用。
Eclipse 给我一个错误,compareTo() 必须返回一个int,但如果您注意到,我正在返回一个整数值。那么可能是什么问题呢?
public int compareTo(Task taskToCompare) {
if(this.complete && taskToCompare.isComplete()) {
if(this.priority == taskToCompare.getPriority()) {
return 0;
}
else if(this.priority < taskToCompare.getPriority()){
return -1;
}
else if(this.priority > taskToCompare.getPriority()) {
return 1;
}
} else if(this.complete == true && taskToCompare.isComplete() == false) {
return -1;
} else if(this.complete == false && taskToCompare.isComplete() == true) {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
如果返回类型是int,则必须返回一个int或throw异常。仅在没有 a 的情况下退出方法return将导致编译器错误。
如果您if-else-if有条件,可能会出现没有调用任何块的情况。因此,您应该创建一个else带有return.
此外,如果多次调用该方法,isComplete()和的结果taskToCompare.getPriority()可能会发生变化。编译器不知道您的逻辑是否会阻止这种情况。
例如,如果complete是false并且isComplete()也返回,就是这种情况false。和以前一样,编译器不知道您的逻辑是否会阻止这种情况。
我想你想要这样的东西:
public int compareTo(Task taskToCompare) {
if(this.complete && taskToCompare.isComplete()) {
if(this.priority == taskToCompare.getPriority()) {
return 0;
}
else if(this.priority < taskToCompare.getPriority()){
return -1;
}
else{
return 1;
}
} else if(this.complete == true && taskToCompare.isComplete() == false) {
return -1;
} else if(this.complete == false && taskToCompare.isComplete() == true) {
return 1;
}else{
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |