比较两个对象内部的字符串

时间:2014-03-17 09:27:39

标签: object equals

我一直在尝试将Card() object内的字符串与其他Card()对象进行比较,以便在发出扑克牌时检查重复项。

除非打印出比较对帐单,否则我会收到Card@97sd829之类的内容。我制作了自己的Equals() method,用于比较object内的Card() Class,但仍无济于事。

我已尝试使用equals() object的覆盖,但我得到error说它需要在超类中?

public static boolean Equals(Card a, Card b) {
    String str1 = a.toString();
    String str2 = b.toString();
    if (str1.equals(str2))
        return true;
    else 
        return false;
}
public static boolean checkDuplicate (Card a, Card b, Card c, Card d, Card e){
    int num = 5;
    boolean bool = true;
    if (Card.Equals(a, b)||Card.Equals(a, c)||Card.Equals(a, d)||Card.Equals(a, e)||
    Card.Equals(b, c)||Card.Equals(b, d)||Card.Equals(b, e)||Card.Equals(c, d)||
    Card.Equals(c, e)||Card.Equals(d, e)); num--;
    if (num == 5)
        bool = false;
    else
        bool = true;
    return bool;
}

1 个答案:

答案 0 :(得分:0)

您正在使用Object.class的toString()方法来获取卡片的String表示形式。

toString()的默认实现包含对象的哈希。由于您有两个不同的Card对象,因此这些对象的toString()方法会产生不同的输出。

更好的方法是在Card类中实现equals()。然后你可以用a.equals(b)检查是否相等。

如果您需要建议如何实现Card.equals(),您应该发布Card类的源代码。

相关问题