Добавление целых чисел в ArrayList в зависимости от модуля их индексов - PullRequest
2 голосов
/ 19 марта 2019
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, насколько я понимаю.

1 Ответ

5 голосов
/ 19 марта 2019

Посмотрим, что происходит с каждым циклом.Начало: [10, 20, 30].

  • i = 2

    Выражение i % 2 равно 0, поэтому добавляется элемент с индексом 2 (30)в конец списка.Список теперь [10, 20, 30, 30].

  • i = 1

    Выражение i % 2 равно 1, поэтому элемент с индексом 1 (20)вставляется в начале списка.Список теперь [20, 10, 20, 30, 30].Обратите внимание, что 20 теперь находится в начале списка.

  • i = 0

    Выражение i % 2 равно 0, поэтому элемент по индексу0 (20) добавляется в конец списка.Список теперь [20, 10, 20, 30, 30, 20].Обратите внимание, что добавляется 20, а не 10, поскольку 10 больше не находится в начале списка, 20 равно.

...