因此,我试图从玩家的“机架”(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
。