我在比较数组中的元素时遇到了一些麻烦。我正在创建一个扑克问题,似乎无法编写代码来判断两个元素是否相同。这是我的代码比较元素中的内容
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]);
}
任何帮助都会受到赞赏,我尝试了很多东西,现在只是随意尝试。谢谢!
答案 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])