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 cannot be dereferenced というエラーが表示されます。誰でも理由を理解するのを手伝ってもらえますか?

4

3 に答える 3

5

double2 つのプリミティブを比較するには:

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

なぜこれが起こっているのかについては、rocketboy が正しいです。

このような Double ラッパー クラスの使用を検討してください

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

最初の値のみをラッパー Double に変換する必要があり、2 番目の値は自動ボックス化されます。

于 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 に答える