我试图找出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));
最佳答案
该错误表明您传递给 get()
的 index
值大于或等于列表中的元素数量。按如下方式更改代码以避免异常:
public boolean varExists(int index){
return index >= 0
&& index < mjo_vars.size()
&& mjo_vars.get(index) != null;
}
一般来说,该错误意味着您的索引方案有问题:Java 中的列表和数组索引从零开始,到 size()-1
(含)结束。如果传递 2
会触发异常,但传递 1
就可以了,那么列表只有两个元素 - 索引 0
和 1
.
关于Java调用函数两次时出现越界异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15187964/