1

我被告知 compareTo 必须返回一个 int ......不是布尔值。
例如:

退货

0 如果 a 等于 b
-1 如果 a < b
+1 如果 a > b

我对此感到有些困惑。任何帮助将不胜感激。

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

YescompareTo方法将返回 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 回答