我有一个数组[1,1,1,1,1,1],我想创建一个for循环,该循环将在所有1之间插入0。

我尝试使用

for(int i=0;i<array.length;i+2) {
    insertItem(array,i,0);
}


但这是行不通的,因为每次插入项目时数组的长度都会增加,并且我的客户端会崩溃。

最佳答案

我假设insertItem根据需要增加array的长度。在这种情况下,诀窍是在开始循环之前计算所需的新插入次数(array.length - 1)。新值插入在2*i+1给定的奇数位置

int n = array.length - 1;
for(int i=0; i<n; i++) {
  insertItem(array, 2*i+1, 0);
}


一种替代方法是创建一个新数组,并像这样填充它:

int[] narr = new int[2*arr.length-1];
for(int i=0; i<narr.length; i++) {
    narr[i] = (i % 2 == 0) ? arr[i/2] : val;
}

09-10 07:52
查看更多