所以,我有这个。它比较两个纸牌组,如果它们相同,则结果为真。
public boolean equals ( Object obj ) {
boolean result = true;
for (int i = 0; i < 52; i++) {
if (this.cardAt(i) = this2.cardlist(i)) {
result = true;
} else {
result = false;
}
}
}
如果可以的话,我希望能够比较两个随机的卡片组。
但是我不知道如何使用“ this”比较两个不同的对象。
我只写了“ this2”来替换“ this”的另一个实例。
我该怎么做才能替换此“ this2”以仍然能够比较两个卡片组?
最佳答案
obj
是您的this2
考虑这种适应:
public boolean equals ( Object obj) {
if(!obj instanceof Deck) return false; // make sure you can cast
Deck otherDeck = (Deck)obj // make the cast
for (int i = 0; i < 52; i++) {
if (!this.cardAt(i).equals(otherDeck.cardAt(i)) // use .equals() instead of ==
return false; // return false on the first one that's wrong
}
return true;
}
您的旧方法可能存在缺陷。假设有一个四张牌:
{4S,3C,5D,AH}
还有另一个四张牌
{4S,10C,5D,AH}
穿过他们
result = true
current index 0... compare 4S to 4S... good, so...
result = 4S == 4S ? true
result = 3C == 10C ? false
result = 5D == 5D ? true
result = AH == AH ? true
因此,您的方法仅测试LAST卡是否正确。 (此外,它永远不会在完成后返回!)