我一直在尝试将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;
}
答案 0 :(得分:0)
您正在使用Object.class的toString()方法来获取卡片的String表示形式。
toString()的默认实现包含对象的哈希。由于您有两个不同的Card对象,因此这些对象的toString()方法会产生不同的输出。
更好的方法是在Card类中实现equals()。然后你可以用a.equals(b)检查是否相等。
如果您需要建议如何实现Card.equals(),您应该发布Card类的源代码。