繁体   English   中英

元素的ArrayList链接并获取IndexOutOfBoundsException

[英]ArrayList link for an element and get IndexOutOfBoundsException

这是我的代码简要:

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

当我想在“ masikEllenVall”方法中从“ ellenfelValaszai”列表中写入所有内容时,我总是收到此错误消息:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.ArrayList.rangeCheck(ArrayList.java:638)
    at java.util.ArrayList.get(ArrayList.java:414)
    at Foglyok.FabianFerenc.masikEllenVall(FabianFerenc.java:51)

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

将您的代码更改为以下内容:

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

还请阅读其他答案,尤其是有关如何清除阵列的信息。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM