比较阵列内的元素

时间:2013-04-20 17:29:16

标签: java arrays

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

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]);
}

任何帮助都会受到赞赏,我尝试了很多东西,现在只是随意尝试。谢谢!

2 个答案:

答案 0 :(得分:4)

您需要使用并实现Card.equals(Card)而不是==。 (因此也是hashCode(),这里有很多问题可以解答原因)。

这会使你的对()像这样:

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]时,它才返回true。否则就是假的。

答案 1 :(得分:0)

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