根据索引的模数将整数添加到ArrayList

问题描述 投票:2回答:1
import java.util.*;
public class AddingIntegers{

     public static void main(String []args){
        ArrayList <Integer> list = new ArrayList<>(Arrays.asList(10,20,30));

        add(list);
     }


public static void add(ArrayList<Integer> list) {
    for (int i = list.size() - 1; i >= 0; i--) {
        if (i % 2 == 0) {
            list.add(list.get(i));
        } else {
            list.add(0, list.get(i));
        }
    }
    System.out.println(list);
}

}

预期产出:[20,10,20,30,30,10]

实际产量:[20,10,20,30,30,20]

所以我不明白为什么,对于最后一个索引,当i = 0时,在列表的末尾加上20,就我而言应该是10。

java arraylist modulus
1个回答
5
投票

让我们看看每个循环会发生什么。开始:[10, 20, 30]

  • i = 2 表达式i % 20,因此索引2处的元素(30)被附加到列表的末尾。该名单现在是[10, 20, 30, 30]
  • i = 1 表达式i % 21,因此索引1处的元素(20)被插入列表的开头。该名单现在是[20, 10, 20, 30, 30]。请注意,20现在位于列表的开头。
  • i = 0 表达式i % 20,因此索引0处的元素(20)被附加到列表的末尾。该名单现在是[20, 10, 20, 30, 30, 20]。请注意,20是附加的,而不是10,因为10不再位于列表的开头,20是。
© www.soinside.com 2019 - 2024. All rights reserved.