2015-01-17 1 views
0

Я пытаюсь создать массив с последовательностью переменной длины, поэтому я решил использовать ArrayList.Java ArrayList for-loop lcv считается объектом, а не int

Поскольку я хочу найти сумму последовательности чисел, я попытался использовать метод ArrayList.get (int index), чтобы получить значение элемента в ArrayList, но NetBeans жалуется на меня около incompatible types: Object cannot be converted to int для следующий код:

int seqLen = sequence.size(); // number of elements in ArrayList sequence 
int seqSum = 0; // sum of all elements in the sequence 
for(int i = 0; i <= seqLen; i++) { 
    int seqPart = sequence.get(i); 
    seqSum+= seqPart; 
} 

в частности, линия int seqPart = sequence.get(i);

Я не знаю, почему он считает, что i является object и не int, и этот блок кода имеет решающее значение для программы работы ,

В принципе, что я делаю неправильно здесь, я перешел через JavaDoc для ArrayList пару раз сейчас, но я до сих пор не понял, что случилось.

+0

Каковы значения, которые вы храните в этом ArrayList? – roeygol

ответ

1

Если вы посмотрите на the JavaDoc, вы заметите, что get возвращает E. Если вы не определяете, что такое E, по умолчанию будет Object. Объекту нельзя присваивать int. Определите ArrayList, как это:

List<Integer> sequence = new ArrayList<>(); 

Это говорит о том, «Я собираюсь заполнить этот ArrayList с Целыми». Таким образом, когда вы вызываете get(), он вернет Integer вместо Object.

Эта часть является более продвинутым и не супер важно, так что не волнуйтесь, если он идет над головой: Причина, по которой можно назначить, что Integer к int из-за концепции под названием Auto unboxing.

Смежные вопросы