tbc*_*ord 0 java stack arraylist
所以我试图从玩家的'Rack'(一个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));
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何删除玩家'Rack'中的所有项目,使rackSize = 0,并将所有项目添加到弃牌堆中?
如果这令人困惑,非常抱歉.你可以通过说a中有10个整数来概括它ArrayList<Integer> hand,所以:[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));
}
Run Code Online (Sandbox Code Playgroud)
这样,你总是会进入第一个新元素,Rack直到它为空,假设Rack在执行此代码时没有重新填充.