Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
397 views
in Technique[技术] by (71.8m points)

double cannot be dereferenced for equals and compareTo (java)

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;
    }
}

-------------------------------

at points //problem here. I get the compile error saying that doubles cannot be dereferenced. I understand that doubles are of primitive type, but I still don't fully understand how to use them in a compareTo method. So after overriding the equals method, how do I use it in the compareTo method? I want to first compare price. If price equals otherPrice, category must be compared next.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

equals() as defined compares the price of items, so the line should read:

if (this.equals(other))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...