public class Item implements Comparable
{
private String name, category;
private int quantity;
private double price;
public Item(String nam,String cate,int quant,double pric)
{
name = nam;
category = cate;
quantity = quant;
price = pric;
}
public String toString()
{
return name + ", " + category + ", " + quantity + ", " + price;
}
public boolean equals(Object other)
{
if (price == ((Item)other).getPrice())
return true;
else
return false;
}
public String getName()
{
return name;
}
public String getCategory()
{
return category;
}
public int getQuantity()
{
return quantity;
}
public double getPrice()
{
return price;
}
public int compareTo(Object other)
{
int result;
String otherPrice = ((Item)other).getPrice();
String otherCategory = ((Item)other).getCategory();
if (price.equals(otherPrice)) //Problem Here
result = category.compareTo(otherCategory);
else
result = price.compareTo(otherPrice);
return result;
}
}
-------------------------------
в пунктах // проблема здесь. Я получаю ошибку компиляции, говоря, что удвоения не могут быть разыменованы. Я понимаю, что двойники имеют примитивный тип, но я до сих пор не совсем понимаю, как их использовать в методе compareTo. Итак, после переопределения метода equals, как его использовать в методе compareTo? Я хочу сначала сравнить цена. Если цена равна otherPrice, Категория необходимо сравнить следующим образом.double не может быть разыменован для equals и compareTo (java)
Пожалуйста, используйте тег языка для определения языка – horns
Dealing с примитивами в методах, таких как '' compareTo' и equals' требует использования своих объектных сопоставлений (например, «Двойной» для парных разрядов). Вы можете автоматически использовать атрибуты autobox/unbox в/из своих типов объектов. Будьте осторожны при сравнении удвоений ... так как «равенства», как правило, очень трудно достичь, просто используя «==». –
Кроме того, boo для сравнения удвоений с 'equals' (или' == ') и использования их для валюты. – vanza