2
import java.awt.Rectangle;
import java.util.Comparator;
public class RectangleComparator implements Comparator
{
      public int compare(Object object1, Object object2)
      {
        Rectangle rec1 = (Rectangle) object1;
        Rectangle rec2 = (Rectangle) object2;

        return rec1.getWidth().compareTo(rec2.getWidth());
    }
}

出于某种原因,我收到错误 double 无法取消引用。谁能帮我弄清楚为什么?

4

3 回答 3

5

比较两个double原语:

Java老派:

return new Double(rec1.getWidth()).compareTo(new Double(rec2.getWidth());

Java 1.4 及以上版本:

return Double.compare(rec1.getWidth(), rec2.getWidth());
于 2013-09-09T05:01:13.010 回答
4

关于为什么会发生这种情况,火箭男孩是正确的。

考虑像这样使用 Double 包装器类

new Double(rec1.getWidth()).compareTo(rec2.getWidth());

只有第一个值需要转换为包装 Double,第二个值将被自动装箱。

于 2013-09-09T04:56:44.313 回答
3

我认为你的Rectangle.getWidth()回报是double. 它不是像 Double 这样的包装对象,因此不能使用点运算符。

如果是: Double getWidth()而不是double getWidth()

那么rec1.getWidth().compareTo(rec2.getWidth());将是有效的。

如何比较Java中的双打?

于 2013-09-09T04:52:25.047 回答