为什么发生ArrayIndexOutOfBoundsException,以及如何避免在Android?
为什么发生ArrayIndexOutOfBoundsException
以及如何避免在Android?
当您尝试访问不存在的数组项时,会引发此exception:
String [] myArray = new String[2]; myArray[2] = "something"; // Throws exception myArray[-1] = "something"; // Throws exception
在访问数组项目之前,您应该检查索引是否为负数且不高于数组长度。
为什么发生ArrayIndexOutOfBoundsException […]
这是来自Java语言规范的引用:10.4数组访问 :
在运行时检查所有的数组访问; 尝试使用小于零或大于或等于数组长度的索引会导致引发ArrayIndexOutOfBoundsException。
[…]以及如何避免在Android?
你确定你的索引是在[0 … yourArray.length
-1]的范围内。
(注意上面的-1,数组是0索引的,这意味着你可以在索引0处find第一个元素,最后一个长度为1)。
就像说的那样,它意味着你访问一个不存在的数组项。
大部分时间是因为有人要求数组的大小(长度),然后尝试读取array[length]
的最后一个项目。 但是数组从0开始,所以你可以读取的最后一个是array[length-1]
溶剂当然不能存取不存在的物品
这个exception与Android无关,因为Android应用程序使用Java编程语言。 相反,你应该问how to avoid it in Java?
。
底线是你正试图访问数组中无效索引的值。
在这里阅读官方文档:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html