2

为什么会ArrayIndexOutOfBoundsException发生以及如何在 Android 中避免它?

4

4 回答 4

6

当您尝试访问不存在的数组项时会引发此异常:

String [] myArray = new String[2];

myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception

在访问数组项之前,您应该检查您的索引不是负数并且不高于数组长度。

于 2011-02-10T14:26:10.107 回答
4

为什么会发生 ArrayIndexOutOfBoundsException [...]

这是Java 语言规范的引文:10.4 数组访问

在运行时检查所有数组访问;尝试使用小于零或大于或等于数组长度的索引会导致抛出 ArrayIndexOutOfBoundsException。

 

[...] 以及如何在 Android 中避免它?

您确保您的索引在 [0...- yourArray.length1] 范围内。

(请注意上面的 -1。数组是 0 索引的,这意味着您将在索引 0 处找到第一个元素,在长度为 1 处找到最后一个元素。)

于 2011-02-10T14:43:27.550 回答
1

如前所述,这意味着您访问了一个不存在的数组项。

大多数时候是因为有人询问数组的大小(长度),然后尝试将最后一项读取为array[length]. 但是数组从0开始,所以你能读到的最后一个是array[length-1]

解决方案当然是不要访问不存在的项目

于 2011-02-10T14:29:03.923 回答
0

此异常与 Android 无关,因为 Android 应用程序使用 Java 编程语言。相反,你应该问 like how to avoid it in Java?

最重要的是,您正在尝试访问数组中无效索引处的值。

在此处阅读官方文档:

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

于 2011-02-10T14:31:03.110 回答