所以,我有这个。它比较两个纸牌组,如果它们相同,则结果为真。

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卡是否正确。 (此外,它永远不会在完成后返回!)

07-26 01:55