1

我试图找出在某个点是否存在一个变量ArrayList,但是,当调用执行此操作的函数时,两次,我得到一个java.lang.IndexOutOfBoundsException. 但是当该函数只被调用一次时,它不会出错,即使在两次调用该函数时,它们会检查是否存在不同的索引,而不是相同的索引。

代码;

//package mj.mjo.Vars;
public boolean varExists(int index){
    return mjo_vars.get(index) != null;
}

注意,这里的 mjo 是一个变量,而 vars 是另一个变量,即 mj.mjo.Vars 类

//package mj.play.StudioCanvas;
int nonsys = mjo.vars.setVar("TEST", "LOLOLOL", false); // returns 1
int yessys = mjo.vars.setVar("SYSVARTEST", "WOOHO!", true); // returns 2

System.out.println("DOES THE VAR \"TEST\" EXIST? " + mjo.vars.varExists(nonsys));
System.out.println("DOES THE VAR \"TEST\" EXIST? " + mjo.vars.varExists(yessys));
4

1 回答 1

0

该错误表明index您传递给get()的值大于或等于列表中的元素数。如下更改代码以避免异常:

public boolean varExists(int index){
    return index >= 0
        && index < mjo_vars.size()
        && mjo_vars.get(index) != null;
}

通常,该错误意味着您的索引方案有问题:Java 中的列表和数组索引从零开始,并以size()-1(包括)结束。如果传递2触发异常,但传递1正常,则列表只有两个元素 - 在索引处01.

于 2013-03-03T16:48:25.980 回答