0

因此,在设计流行的纸牌游戏“UNO”时,我遇到了一个问题,如果用户输入 (-1) 从牌组中抽出一张牌并将其放入手中,我会遇到 ArrayIndexOutOfBoundsException。现在我知道这是因为没有创建数组的另一个元素,但我不确定在这种情况下如何创建。

这是我的 addCardToHand 方法的代码:

public void addCardToHand(Card c)

    {
        this.cards[this.cardCount] = c;
        this.cardCount++;
    }

这种方法最初适用于让玩家每人 5 张牌,但这就是我所能做的。它被另一个类中的另一个方法调用,该方法从“卡片组顶部”生成 Card 对象参数。接下来我该怎么做?

4

2 回答 2

2

请记住,简单数组不像ArrayLists 那样动态,因为它们不会自动调整大小以容纳更多条目。您可以使用 anArrayList或创建一个大于 的新数组,this.cards并将所有值复制到其中(包括Card您要添加的新值),然后发出语句this.cards = newArray

于 2012-04-26T23:34:55.420 回答
0

每当您无法插入新卡时,您可以创建一个大小为前一个数组两倍的新数组。这样您就不需要在每次添加卡片时复制整个数组。

因此,假设您有一个数组 a=[1,2,3] 并且您想添加一张新卡 4 但不能。您创建一个新数组 b=new Card[a.length*2],从数组 a 复制先前的值,并将 4 放在您需要的位置。你最终得到一个数组 a=[1,2,3,4,-,-]。添加 3 张卡片后,您将有一个数组 a=[1,2,3,4,5,6,7,-,-,-,-,-] 等。

于 2012-04-26T23:56:13.333 回答