在for语句中使用变量循环遍历数组

时间:2018-03-09 06:26:54

标签: android

我试图使用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;
}

我遇到的问题是没有添加/删除正确的索引。

3 个答案:

答案 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));