这个Java错误是什么意思?

Den*_*nez 9 java stack-trace

java.lang.IndexOutOfBoundsException: Index: 1365, Size: 1365
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.Engine.write(Engine.java:114)
at com.Engine.read(Engine.java:90)
at com.Engine.main(Engine.java:19)
Run Code Online (Sandbox Code Playgroud)

我知道我的阵列是出界的,但是那是什么

Index: 1365, Size: 1365

表明?

我怎么能解决这个问题呢?只是增加我的阵列的大小?

sfr*_*frj 9

-Size是数组的大小(可以容纳的元素数量).

-Index是您尝试访问的位置.

注1:由于第一个索引是0,你试图访问数组的最大值1+,这就是你得到那个例外的原因

修正选项1

要在使用循环操作元素的情况下修复此异常,可以执行以下操作:

for(int i = 0; i < array.length; i++) {
   array[i].doSomething();
}
Run Code Online (Sandbox Code Playgroud)

修正选项2

如你所说,增加尺寸将是另一种选择.你只需要做这样的事情:

MyArray[] ma =  new MyArray[1366];
Run Code Online (Sandbox Code Playgroud)

但是 ,如果你想在将来再次增加它,那将不是很灵活.因此,避免这样的事情的另一个选择是使用更高级的数据结构或集合,如List,因为它们在需要时会自动增加.请在此处查看有关数据结构的更多信息:http://tutorials.jenkov.com/java-collections/index.html

示例1创建:

List<MyObject> myObjects =  new ArrayList<MyObject>();
Run Code Online (Sandbox Code Playgroud)

示例2迭代:

 for(MyObject mo : myObjects) {
     MyObject tmpValue = mo;
    mo.doSomething();  
   }
Run Code Online (Sandbox Code Playgroud)


Mic*_*man 7

Java数组是0索引的,所以如果你有一个大小为1365的数组,有效索引是0,1,2,... 1364.你的代码中可能有一个一个一个错误:而不是迭代到< length,你迭代到<= length或类似.