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
表明?
我怎么能解决这个问题呢?只是增加我的阵列的大小?
-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)
Java数组是0索引的,所以如果你有一个大小为1365的数组,有效索引是0,1,2,... 1364.你的代码中可能有一个一个一个错误:而不是迭代到< length,你迭代到<= length或类似.
| 归档时间: |
|
| 查看次数: |
13990 次 |
| 最近记录: |