将此行代码转换为for循环

时间:2017-07-25 19:30:58

标签: java arrays for-loop arraylist increment

所以在java中,这就是我要执行的内容:

num [0]=list.get(2);
num [1]=list.get(4);
num [2]=list.get(6);
num [3]=list.get(8);

我有一个名为list的整数的arraylist,我想将从2开始的偶数索引中的值放入索引0,1,2,3等中名为num的整数数组中。我的问题是,我正在尝试在for循环中执行此操作,但我不确定如何去做。这就是我所拥有的:

for (int i=0; i<list.size()-2; i++){
            num[i] = list.get(i+2);

        }

我的问题是,在递增i之后,我的arraylist也会转到下一个索引,而不是每个其他索引。我尝试了这个循环的多种变体,但我不断遇到同样的问题。

4 个答案:

答案 0 :(得分:2)

这应该这样做:

int max = list.size()/2;
if(list.size()%2==0) max-=1; // prevents IndexOutOfBounds for even list lengths
for (int i=0; i<max; i++){
    num[i] = list.get(i*2 + 2);
}

答案 1 :(得分:1)

你可以尝试这样的事情。

for (int i=0,j=0; i<list.size()-2; i+=2,j++){ num[j] = list.get(i+2); }

答案 2 :(得分:1)

只要 i 小于(list.size()-1)/2

,循环就会继续
List<Integer> list = Arrays.asList(0,1,2,3,4,5,6);
int size = (list.size()-1)/2;
int[] num = new int[size];

for (int i=0; i<size; i++){
  num[i] = list.get(i*2+2);
}
System.out.println("num="+ Arrays.toString(num));

这是DEMO

答案 3 :(得分:0)

这应该有效:

for(int i = 0; i < list.size() - 2; i++)
      num[i] = list.get((i * 2) + 2);