Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CompareTO具有双值_Java - Fatal编程技术网

Java CompareTO具有双值

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,看看它是否能工作。我尝试了以下方法。(主题是我初始化用来保存所有不同人物实例的

我需要能够根据他们的整体健康得分重新安排一组人。我可以用int做一个比较法,但只要用double,我就会发现到处都是错误

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);
}