2011-02-10 85 views
2

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

+3

那么天真的回答是:“因为你试图访问一个不存在的数组索引,因此超出了数组的范围“,这意味着索引太大或太小(在后一种情况下最可能是负数)。然而,基本上不可能在没有A)的情况下帮助你解决问题。A)更多描述或B)代码示例(最好是B,真的)。 – eldarerathis 2011-02-10 14:24:20

+2

甚至更​​短的答案:不要访问超出其声明边界的数组。 – 2011-02-10 14:25:30

回答

4

当您试图访问一个不存在的数组项,抛出此异常:访问数组的项目之前

String [] myArray = new String[2]; 

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

你应该检查你的索引不是消极和不大于数组长度高。

1

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

大多数情况下,这是因为有人要求数组的大小(长度),然后尝试读取最后一项作为array[length]。 但阵列在开始,所以最后你可以读取array[length-1]

Sollution是ofcourse 不要访问不存在

3

为什么ArrayIndexOutOfBoundsException异常发生[...]

这里是the Java Language Specification: 10.4 Array Access报价:

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

 

[...],以及如何避免它的Android?

确保您的指数在[0 ... yourArray.length -1]范围内。

(注-1以上。数组0索引,这意味着你会发现在索引0处的第一个元素,最后在长-1)。

相关问题