我试图使用for语句中声明的变量来遍历我的数组。这是正确的做法吗?例如:
for(int i = 0; i < 4; i++){
someArray.add(anotherArray.get(i)
}
我想将anotherArray中的对象添加到someArray,从0开始到结束于索引3.这是正确的方法吗?以下是我的实际代码。
for(int i = 0; i < warIncrement; i++){
playerTwoNumber.add(playerOneNumber.get(i));
playerTwoSuit.add(playerOneSuit.get(i));
playerTwoNumber.add(playerTwoNumber.get(i));
playerTwoSuit.add(playerTwoSuit.get(i));
playerOneNumber.remove(i);
playerOneSuit.remove(i);
playerTwoNumber.remove(i);
playerTwoSuit.remove(i);
playerTwoWarTV.setText("" + playerTwoWar);
playerTwoCardsTV.setText("" + playerTwoNumber.size());
playerOneCardsTV.setText("" + playerOneNumber.size());
playerOneNumberTV.setText("" + playerOneNumber.size() + "\n" + playerOneNumber);
playerTwoNumberTV.setText("" + playerTwoNumber.size() + "\n" + playerTwoNumber);
hideWarCards();
atWar = false;
warIncrement = 4;
}
我遇到的问题是没有添加/删除正确的索引。
答案 0 :(得分:0)
您可以在
中使用subList
方法
List<String> tempPlayerNumbersToTransfer = playerOneNumber.subList(0,warIncrement);
playerTwoNumber.addAll(tempPlayerNumbersToTransfer);
playerOneNumber.removeAll(tempPlayerNumbersToTransfer);
答案 1 :(得分:0)
我发誓我要创建一个论坛让我发布我的问题。一发帖,我就会在代码中看到简单的愚蠢错误。
让我们说someArray的索引0-3是10,16,20。第一次迭代添加/删除i,它是索引0.现在我已经删除它,16是在索引0.然后我循环并添加/删除我再次现在是1.我没有在索引1处添加/删除16个WAS,而是添加/删除20,因为它现在位于索引1处。
要解决此问题,我将i更改为0.这样,它会在循环时将所有对象移向索引0。第一次迭代添加/删除10.现在10已经消失了我想要添加16. 16现在是索引0所以它添加/删除它等等。希望我的缺陷可以帮助其他人。
答案 2 :(得分:0)
问题是当你移除一个项目时,下一个项目的位置会改变。例如
列表--------&GT; a b c d - &gt; b c d
位置 - &GT; 0 1 2 3 - &gt; 0 1 2
int i --------&gt; 0 ---------&gt; 1
项-------&GT; a ---------&gt; ç
实现目标的最佳途径是
playerTwoNumber.addAll(playerOneNumber.subList(start, end));
playerOneNumber.removeAll(playerOneNumber.subList(start, end));