因此,我试图从玩家的“机架”(ArrayList)中移除所有牌,并将它们逐一放置在弃牌堆(Stack)中。到目前为止,我已经了解到以下代码,一旦达到5,它将停止运行。(注意:每个玩家机架有10张卡)。

        int rackSize = player.getPlayerRack().getRack().size(); // rackSize = 10
        for (int i = 0; i < rackSize; i++) {
            getDeck().getDiscardPile().add(player.getPlayerRack().getRack().remove(i));
        }


我的问题是如何删除玩家“ Rack”中的所有物品,使rackSize = 0,并将所有物品添加到弃牌堆中?

非常抱歉,如果这令人困惑。您可以通过说ArrayList<Integer> hand中有10个整数来概括这一点,因此:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。您如何从该列表中删除所有项目并将其添加到Stack<Integer> discardPile

最佳答案

发生的事情是,当您从Rack中删除​​元素时,您仍在使用i++递增,这意味着旧索引i上的新值仍被留下。您要做的就是将代码更改为此:

int rackSize = player.getPlayerRack().getRack().size(); // rackSize = 10
for (int i = 0; i < rackSize; i++) {
    getDeck().getDiscardPile().add(player.getPlayerRack().getRack().remove(0));
}


这样,您将一直访问Rack中的第一个新元素,直到它为空为止,并假定在执行此代码时未重新填充Rack

07-25 21:42