1

compareTo はブール値ではなく int を返さなければならないと言われました。
例えば:

戻り値

a が b と等しい場合は 0 a
< b の場合は -1 a
> b の場合は +1

私はそれに少し混乱しています。どんな助けでも大歓迎です。

public int compareTo(Cheese anotherCheese)
   throws ClassCastException
   {
       if (!(anotherCheese instanceof Cheese))
            throw new ClassCastException("A Cheese object expected.");

       if(getCheeseType().compareTo(anotherCheese.getCheeseType()))
            return -1;
       else if (getCheeseType().compareTo(anotherCheese.getCheeseType()))
            return 1;
       else
            return cheesePrice > anotherCheese.getCheesePrice();
   }   

コンパイルすると、次のようなエラー メッセージが表示されます。


互換性のないタイプ
if(getCheeseType().compareTo(anotherCheese.getCheeseType()))
互換性のないタイプ
else if (getCheeseType().compareTo(anotherCheese.getCheeseType()))
互換性のないタイプ
return cheesePrice > anotherCheese.getCheesePrice();

4

4 に答える 4

4

compareTo実際にはintではなく を返しbooleanます。そのため、これらのコンパイルエラーが発生します。ifステートメント内には、 boolean.

だから代わりに

if(getCheeseType().compareTo(anotherCheese.getCheeseType()))

書きます

if(getCheeseType().compareTo(anotherCheese.getCheeseType()) < 0)

于 2012-05-01T20:07:20.717 に答える
0

ただする

return getCheeseType().compareTo(anotherCheese.getCheeseType());

価格でも比較したい場合は、

if(getCheeseType().compareTo(anotherCheese.getCheeseType())!=0)
    return getCheeseType().compareTo(anotherCheese.getCheeseType());
//cheeseTypes are equal
if(cheesePrice < anotherCheese.getCheesePrice())
    return -1;
else if (cheesePrice > anotherCheese.getCheesePrice())
    return 1;
else
    return 0;
于 2012-05-01T20:07:57.680 に答える
0
   // Order by type.
   int delta = getCheeseType().compareTo(anotherCheese.getCheeseType());
   if (delta != 0) { return delta; }
   // If of the same type, order by price.
   if (cheesePrice < anotherCheese.getCheesePrice()) { return -1; }
   if (cheesePrice > anotherCheese.getCheesePrice()) { return 1; }
   return 0;
于 2012-05-01T20:09:23.387 に答える
0

はいcompareTo、メソッドは ではなく int 型を返しbooleanます。しかしgetCheeseType().compareTo(anotherCheese.getCheeseType())、if ループを使用しているため、コンパイル時にエラーが発生します。このように変化します。

public int compareTo(Cheese anotherCheese)
   throws ClassCastException
   {
       if (!(anotherCheese instanceof Cheese))
            throw new ClassCastException("A Cheese object expected.");

       else return getCheeseType().compareTo(anotherCheese.getCheeseType()))

   }   
于 2012-05-01T20:10:41.623 に答える