Integer数组列表的打印内容在末尾显示负数



我创建了一个整数数组列表,并在其中添加了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));
}
}
}

因为您使用的是<=而不是<。添加元素后,avarlist的大小将为11。然后在列表上迭代12次(从0到11,包括0到11(。

记住:列表的最后一个索引总是size() - 1。在对列表进行迭代时,几乎可以肯定需要使用< size()

问题已经得到回答,但是您可以改进您的代码:

对于在您的ArrayList中迭代,您可以使用每个:

for(Integer i:avarlist){
System.out.println(i);
}

因为您将for循环的终止条件用作i<= avarlist.size()。在大多数编程语言的数组或数组列表中,索引从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++;
}

最新更新