Java在调用函数两次时发出超出范围的异常?

时间:2013-03-03 16:44:21

标签: java exception arraylist

我试图找出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));

1 个答案:

答案 0 :(得分:0)

错误表示您传递给index的{​​{1}}的值大于或等于列表中的元素数。按如下方式更改代码以避免异常:

get()

通常,错误意味着索引方案出现问题:Java中的列表和数组索引从零开始,以public boolean varExists(int index){ return index >= 0 && index < mjo_vars.size() && mjo_vars.get(index) != null; } 结束,包括在内。如果传递size()-1会触发异常,但传递2就行了,那么列表只有两个元素 - 索引10