0

我在比较数组中的元素时遇到了一些问题。我正在创建一个扑克问题,似乎无法编写代码来判断两个元素是否相同。这是我比较元素中的内容的代码

public static boolean pairs() {
    for (int i = currentCard; i < deck.length; i++) {
        for (int j = currentCard ; j < deck.length; j++) {
            if (deck[i] == deck[j])
                return pairs == true;
        }
    }
    return pairs;
}

这是构建数组的代码:

public CreateDeck() {
    String[] faces = { "Ace", "Deuce", "Three", "Four", "Five", "Six",
        "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
    String[] suits = { "Hearts", "Diamonds", "Spades", "Clubs" };

    deck = new Card[NUMBER_OF_CARDS];
    currentCard = 0;

    for (int count = 0; count < deck.length; count++)
        deck[count] = new Card(faces[count % 13], suits[count / 13]);
}

任何帮助将不胜感激,我尝试了很多事情,现在只是随机尝试。谢谢!

4

2 回答 2

4

您需要使用和实现 Card.equals(Card) 而不是 ==。(因此还有 hashCode(),这里有很多问题可以回答为什么)。

这将使您的 pairs() 变成这样:

public static boolean pairs() {
    {
        for (int i = currentCard; i < deck.length; i++) {
            for (int j = currentCard ; j < deck.length; j++) {
                if (i!=j && deck[i].equals(deck[j]))
                    return true;
            }

        }
    }
    return false;
}

当且仅当一个牌组[i] 等于另一个牌组[j] 时,它才返回真。否则为假。

于 2013-04-20T17:32:19.177 回答
0

对,所以你的牌组数组中的项目是不同的 Card 对象。== 运算符比较指针,因此它们对于不同的对象是不同的。如果您尝试比较 Card 对象的,则需要实现一个 equals 方法(覆盖从 Object 继承的方法)和调用 deck[i].equals(deck[j])。

于 2013-04-20T17:36:51.567 回答