Java CompareTO具有双值
我需要能够根据他们的整体健康得分重新安排一组人。我可以用int做一个比较法,但只要用double,我就会发现到处都是错误Java CompareTO具有双值,java,Java,我需要能够根据他们的整体健康得分重新安排一组人。我可以用int做一个比较法,但只要用double,我就会发现到处都是错误 public double compareTo(FitnessScore o){ return (this.overall-o.overall); } 它必须是双倍的,因为分数如下: 68.5 68.4 60.1 60.3 因此,将它们转换为int将使其变得多余。当我把它作为一个int,看看它是否能工作。我尝试了以下方法。(主题是我初始化用来保存所有不同人物实例的
public double compareTo(FitnessScore o){
return (this.overall-o.overall);
}
它必须是双倍的,因为分数如下:
68.5 68.4 60.1 60.3
因此,将它们转换为int将使其变得多余。当我把它作为一个int,看看它是否能工作。我尝试了以下方法。(主题是我初始化用来保存所有不同人物实例的数组)
我得到以下错误:
java.lang.NullPointerExceptione
有什么建议吗?您需要实现Comparator接口。不要担心你的价值观。即使compare方法返回int。该int不是您的值之一 也看看这个。 您的
compareTo()
方法接收一个FitnessScore
对象。但是,它不测试空情况
当
o
为null
时,您的方法将抛出NullPointerException
您的比较器必须始终返回int
值
-1用于将其放在收藏之前
0表示集合中已存在相同的值
+1用于随后将其放入收藏中
如果总体
类型为双重
,请使用以下方法:
public int compareTo(FitnessScore o){
return this.overall.compareTo(o.overall));
}
public int compareTo(FitnessScore o){
if(this.overall<o.overall)
return -1;
else if(o.overall<this.overall)
return 1;
return 0;
}
如果总体
类型为双重
,请使用以下方法:
public int compareTo(FitnessScore o){
return this.overall.compareTo(o.overall));
}
public int compareTo(FitnessScore o){
if(this.overall<o.overall)
return -1;
else if(o.overall<this.overall)
return 1;
return 0;
}
公共整数比较(FitnessScore o){
如果(总的来说你可以试试这个
Double obj1 = this.overall;
Double obj2 = o.overall;
int retval = obj1.compareTo(obj2);
//然后执行正常的if-else块。您应该实现一个接口:
class OFSComparator implements Comparator<Member> {
public int compare(Member m1, Member m2) {
return (m1.ofs.compareTo(m2.ofs));
}
}
如果您以后想根据会员的整体健康评分对会员进行排序,您可以使用:
您正在破坏compareTo方法的签名。
它应该如下所示
public int compareTo(FitnessScore o){
return Double.compare(this.overall-o.overall);
}
使用Double.compare
可以提供更多的代码吗?数组。排序(主题)主题是数组吗?它是否已初始化?但您的方法返回一个双精度。而不是,它不是-1或+1。它是负的、零的或正的。@JBNizet谢谢您指出,忘记更正了it@Aditya我仍然不确定NullPointerException是否正确。我已经加入了一个try-and-catch,它忽略了这些信息,然后无论如何都会处理这些信息。好的我的号码在那里,所以有什么办法来对付它,还是我应该离开?@Softey请再发布一些代码,并显示您的错误日志。@Aditya我已经对它进行了排序。Rogue null成功进入。我的旧代码现在可以用了。谢谢您的回答
public int compareTo(FitnessScore o){
return Double.compare(this.overall-o.overall);
}