#java #arraylist
#java #arraylist
Вопрос:
Я создал целочисленный список массивов и добавил в него от 0 до 10. когда я пытаюсь напечатать в цикле for, он выводит отрицательный 1 в качестве последнего элемента массива.
Новое в java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class StudentList {
public static void main(String[] args) {
List<Integer> avarlist = new ArrayList<>();
for (int i=0; i<=10; i ){
avarlist.add(i);
}
for (int i= 0; i<= avarlist.size(); i ){
System.out.println(avarlist.indexOf(i));
}
}
}
Ответ №1:
Потому что вы используете <=
вместо <
. Ваш avarlist
размер будет 11 после добавления элементов. Затем вы выполняете итерацию 12 раз (от 0 до 11 включительно) по списку.
Помните: последний индекс списка всегда size() - 1
. При итерации по списку вам почти наверняка нужно использовать < size()
.
Ответ №2:
На вопрос уже дан ответ, однако вы можете улучшить свой код:
Для итерации по вашему ArrayList вы можете использовать for-each:
for(Integer i:avarlist){
System.out.println(i);
}
Ответ №3:
Потому что вы используете условие завершения цикла for как i<= avarlist.size()
. В массиве или массиве ArrayList в большинстве языков программирования индексация начинается с 0 .Таким образом, значение индекса вашего последнего элемента равно avarlist.size() -1 .Поэтому реорганизуйте свой код одним из способов, описанных ниже.
for (int i= 0; i < avarlist.size(); i ){
System.out.println(avarlist.indexOf(i));
}
for (int i= 0; i <= avarlist.size()-1; i ){
System.out.println(avarlist.indexOf(i));
}
int index =0;
for(int i :avarlist){//Using an enhanced for loop
System.out.println(index);
index ;
}