为什么会ArrayIndexOutOfBoundsException
发生以及如何在 Android 中避免它?
4 回答
当您尝试访问不存在的数组项时会引发此异常:
String [] myArray = new String[2];
myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception
在访问数组项之前,您应该检查您的索引不是负数并且不高于数组长度。
为什么会发生 ArrayIndexOutOfBoundsException [...]
在运行时检查所有数组访问;尝试使用小于零或大于或等于数组长度的索引会导致抛出 ArrayIndexOutOfBoundsException。
[...] 以及如何在 Android 中避免它?
您确保您的索引在 [0...- yourArray.length
1] 范围内。
(请注意上面的 -1。数组是 0 索引的,这意味着您将在索引 0 处找到第一个元素,在长度为 1 处找到最后一个元素。)
如前所述,这意味着您访问了一个不存在的数组项。
大多数时候是因为有人询问数组的大小(长度),然后尝试将最后一项读取为array[length]
. 但是数组从0开始,所以你能读到的最后一个是array[length-1]
解决方案当然是不要访问不存在的项目
此异常与 Android 无关,因为 Android 应用程序使用 Java 编程语言。相反,你应该问 like how to avoid it in Java?
。
最重要的是,您正在尝试访问数组中无效索引处的值。
在此处阅读官方文档:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html