Java 元素的ArrayList链接和get IndexOutOfBoundsException

Java 元素的ArrayList链接和get IndexOutOfBoundsException,java,arraylist,Java,Arraylist,这是我的代码: public class FabianFerenc extends FogolyBase{ ArrayList<Boolean> ellenfelValaszai = new ArrayList<Boolean>(); private void deleteList(){ for(int i=0;i<ellenfelValaszai.size();i++){ ellenfelValasza

这是我的代码:

public class FabianFerenc extends FogolyBase{

    ArrayList<Boolean> ellenfelValaszai = new ArrayList<Boolean>();


    private void deleteList(){
        for(int i=0;i<ellenfelValaszai.size();i++){
            ellenfelValaszai.remove(i);
        }
    }

    @Override
    public boolean masikEllenVall(int iFordulo) {

        if(this.ellenfelValaszai.size()>0){
            System.out.println(this.ellenfelValaszai.get(iFordulo));
        }

        if(this.ellenfelValaszai.size()>999){deleteList();}
        return true;
    }

    @Override
    public void masikMitMondott(int iFordulo, boolean bMasikValasza) {
        this.ellenfelValaszai.add(bMasikValasza);
    }
}

iFordulo变量是从0到999计数的计数器。

java.lang.IndexOutOfBoundsException:Index:1,Size:1
告诉您数组的大小为1。Java数组中元素的索引从0开始,因此单个元素可以通过
ellenfelValaszai.get(0)访问但您正试图使用index=1获取该元素。因此出现了错误。

java.lang.IndexOutOfBoundsException:Index:1,Size:1
告诉您数组的大小为1。Java数组中元素的索引从0开始,因此单个元素可以通过
ellenfelValaszai.get(0)访问但您正试图使用index=1获取该元素。因此出现了错误。

您所包含的错误表明,您试图访问索引为1的元素,而列表中只有1个元素(因此列表中可以使用的最大索引为0)。另外,我建议您将deleteList()方法替换为simple
ellenfelValaszai.clear()

所包含的错误表示您试图访问索引为1的元素,而列表中只有1个元素(因此列表中可以使用的最大索引为0)。另外,我建议您将deleteList()方法替换为simple
ellenfelValaszai.clear()
将代码更改为以下内容:

 @Override
     public boolean masikEllenVall(int iFordulo) {

    if(this.ellenfelValaszai.size() > iFordulo){ //if iFordulo always >= 0 it's sufficient check to be sure array isn't empty
        System.out.println(this.ellenfelValaszai.get(iFordulo));
    }

    if(this.ellenfelValaszai.size()>999){deleteList();}
    return true;
}

同时阅读其他答案,特别是关于如何清除阵列的答案。

将代码更改为以下内容:

 @Override
     public boolean masikEllenVall(int iFordulo) {

    if(this.ellenfelValaszai.size() > iFordulo){ //if iFordulo always >= 0 it's sufficient check to be sure array isn't empty
        System.out.println(this.ellenfelValaszai.get(iFordulo));
    }

    if(this.ellenfelValaszai.size()>999){deleteList();}
    return true;
}

另外,请阅读其他答案,特别是关于如何清除数组的答案。

堆栈跟踪非常自我解释。与您的代码不同。如果我将2添加到“iFordulo”位置,也会出现错误。我建议验证是否从
列表中删除了项目。您最好向后循环,或者只需调用
clear()
@pumpkinsed(),当然您应该检查此处是否有项,但您只检查数组是否为空。堆栈跟踪非常自我解释。与您的代码不同。如果我将2添加到“iFordulo”位置,也会出现错误。我建议验证是否从
列表中删除了项目。你最好向后循环,或者干脆调用
clear()
@pumpkinsed(),当然你应该检查这个地方是否有项目,但你只检查数组是否为空。这很好,现在我需要找出为什么我的列表只有一个元素。这很好,现在我需要找出为什么我的列表只有一个元素。