【发布时间】:2013-08-28 12:11:12
【问题描述】:
我编写了 java 程序,在 ArrayList 中添加整数并从 ArrayList 中删除该整数。但它没有给我正确的结果。这是我的代码..
public static void main(String args[])
{
ArrayList<Integer> a=new ArrayList<Integer>();
a.add(6);
a.add(7);
a.add(8);
a.add(9);
for(int i=0;i<=a.size();i++)
{
System.out.println("Removed Elements=>"+a.remove(i));
}
}
它给我的输出如下
Removed Elements=>6
Removed Elements=>8
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.remove(ArrayList.java:387)
at CollectionTemp.main(CollectionTemp.java:19)
为什么我会得到这样的输出?
【问题讨论】:
-
为什么你的循环是基于 1 的,而不是基于 0 的?
-
对我来说看起来是正确的输出。你期待的是什么?
-
stackoverflow.com/questions/15827703/… 关于如何解决这个问题的好帖子
-
使用调试器单步执行该代码可能是一个好主意,即使下面的答案解释了它。在每一步之后查看
a的内容。 -
请不要在遍历集合时更改集合。这是个坏主意。