Печать содержимого целочисленного списка массивов показывает отрицательное число в конце

#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  ;
}