我需要能够从他们的整体健康分数中重新排列一组人.我可以用int来做一个compareTO方法,但是只要它有双打,我就会错误地飞到各处.
public double compareTo(FitnessScore o){
return (this.overall-o.overall);
}
Run Code Online (Sandbox Code Playgroud)
它需要是双倍的,因为有得分如下:
68.5 68.4 60.1 60.3
Run Code Online (Sandbox Code Playgroud)
因此将它们转换为int会使它变得多余.当我确实把它作为一个int来看它是否会起作用.我尝试了以下内容.(主题是我初始化的数组,用于保存所有不同的人物实例)
Arrays.sort(subjects);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
java.lang.NullPointerExceptione
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Adi*_*tya 12
你compareTo必须要回报一个int价值.
-1用于在Collection
0之前放置它表示Collection
+1中已存在相同的值,用于将其放在Collection中
如果overall是类型Double,请使用:
public int compareTo(FitnessScore o){
return this.overall.compareTo(o.overall));
}
Run Code Online (Sandbox Code Playgroud)
如果overall是类型double,请使用:
public int compareTo(FitnessScore o){
if(this.overall<o.overall)
return -1;
else if(o.overall<this.overall)
return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并为您NullPointerException,检查您subjects的不是空.
小智 5
您正在破坏compareTo方法的签名。如下图所示
public int compareTo(FitnessScore o){
return Double.compare(this.overall-o.overall);
}
Run Code Online (Sandbox Code Playgroud)