我试图找出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));
答案 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
就行了,那么列表只有两个元素 - 索引1
和0
。