Без большего количества кода я не могу сказать наверняка, но наиболее вероятно, что вы никогда не делаете series2 = new LinkedList<Number>
или что-то подобное.
Другая проблема, которую я вижу, состоит в том, что вы начинаете с 1Реализации интерфейса List
, как правило, индексируются 0, поэтому вам нужно
for(int num = 0; num < series.size(); num += 2)
. Лучше всего предоставить полный код (что необходимо для компиляции и воспроизведения проблемы) и трассировку стека.вы также получаете сообщение об ошибке.
РЕДАКТИРОВАТЬ:
Это также зависит от того, что вы хотите для вывода.Давайте представим, что вы вводите в серию 0,1,2,3,4,5,6,7,8,9
и что мы имеем дело только с 10 числами.
Вы хотите, чтобы серия 2 была:
null,1,null,3,null,5,null,7,null,9
1,null,3,null,5,null,7,null,9,null
1,3,5,7,9
Если это один из первых двух, вам нужно изменить цикл, чтобы добавить дополнительные, например:
for (int num = 0; num < 120; num++) {
series2.add(num % 2 == 1 ? series.get(num) : null);
}
Или альтернативно:
for(int num = 1; num < 120; num+=2) {
series2.add(null);
series2.add(series.get(num));
}
В любом случае попытка добавить вот так: series2.add(num, series.get(num))
, вероятно, потерпит неудачу.Согласно документации для List.add(int,E)
Throws
IndexOutOfBoundsException - если индекс выходит за пределы диапазона (index <0 || index> size ())
Так что вы можете использовать это только для добавления к середине List
.Если вы хотите добавить в конец, вы должны использовать List.add(E)
.Если вы хотите добавить к какому-то конкретному индексу в List
, которого он еще не содержит, вам нужно добавить null
(или что-то еще), пока вы не доберетесь туда.Очевидно, это проблема, если ваша реализация List
не поддерживает null
s.