ArrayList的java.lang.IndexOutOfBoundsException

ArrayList的java.lang.IndexOutOfBoundsException,java,exception,arraylist,indexing,Java,Exception,Arraylist,Indexing,这段代码有一个java.lang.IndexOutOfBoundsException private List<Integer> LoeschenX = new ArrayList<Integer>(); private List<Integer> LoeschenY = new ArrayList<Integer>(); for (int i : LoeschenY) LoeschenX.add(LoeschenY.get(i)); priv

这段代码有一个java.lang.IndexOutOfBoundsException

private List<Integer> LoeschenX = new ArrayList<Integer>();
private List<Integer> LoeschenY = new ArrayList<Integer>();

for (int i : LoeschenY) LoeschenX.add(LoeschenY.get(i));
private List LoeschenX=new ArrayList();
private List LoeschenY=new ArrayList();
对于(inti:LoeschenY)LoeschenX.add(LoeschenY.get(i));
当您这样做时

for (int i : LoeschenY)
您在
LoeschenY
元素上循环,而不是在索引上循环。您可能希望迭代索引,以便使用
get(i)


由于
i
获取
LoeschenY
元素的值,您将把这些值添加到
LoeschenX
您似乎在迭代Y数组中的元素,但是
get
方法实际上使用元素作为索引

试一试

for(int i=0;i
IndexOutOfBoundsException-如果索引超出范围(index<0 | | index>=size()),我认为您误解了for each循环的工作原理
i
不是索引,而是迭代过程中每个整数对象保持的int值。也就是说,如果你的列表包含4,-5,12,我将等于4(迭代1),-5(迭代2)和12(迭代3)。
for (int i = 0; i < LoeschenY.size(); i++) 
    LoeschenX.add(LoeschenY.get(i));
for (int i : LoeschenY) 
    LoeschenX.add(i);
for(int i : LoeschenY)
    LoeschenX.add(i);
for(int i = 0; i < LoeschenY.size(); i++)
    LoeschenX.add(LoeschenY.get(i));