Java 为什么ArrayIndexOutOfBoundsException会出现,以及如何在Android中避免它?
为什么会出现Java 为什么ArrayIndexOutOfBoundsException会出现,以及如何在Android中避免它?,java,android,indexoutofboundsexception,Java,Android,Indexoutofboundsexception,为什么会出现ArrayIndexOutOfBoundsException以及如何在Android中避免它?当您尝试访问不存在的数组项时,会引发此异常: String [] myArray = new String[2]; myArray[2] = "something"; // Throws exception myArray[-1] = "something"; // Throws exception 在访问数组项之前,应该检查索引是否为负数且不高于数组长度。这意味着,正如前面所说,您访问
ArrayIndexOutOfBoundsException
以及如何在Android中避免它?当您尝试访问不存在的数组项时,会引发此异常:
String [] myArray = new String[2];
myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception
在访问数组项之前,应该检查索引是否为负数且不高于数组长度。这意味着,正如前面所说,您访问的数组项不存在 大多数情况下,这是因为有人询问数组的大小(长度),然后试图将最后一项读取为
array[length]
。
但是数组开始于0,因此最后可以读取的是array[length-1]
解决方案当然是不要访问不存在的项目这个例外与Android无关,因为Android应用程序使用Java编程语言。相反,您应该询问像
如何在Java中避免它?
底线是您试图访问数组中无效索引处的值
请阅读此处的官方文档:
为什么会出现ArrayIndexOutofBounds异常[…]
以下是一段引文:
在运行时检查所有阵列访问;尝试使用小于零或大于或等于数组长度的索引会引发ArrayIndexOutOfBoundsException
[…]以及如何在Android中避免它?
确保索引在[0…yourArray.length
-1]范围内
(注意上面的-1。数组是0索引的,这意味着您将在索引0处找到第一个元素,最后一个元素的长度为-1。)简单的答案是“因为您试图访问一个不存在的数组索引,因此超出了数组的边界”,这意味着索引太大或太小(在后一种情况下很可能是否定的)。但是,如果没有A)更多的描述或B)代码示例(最好是B,真的)。更简短的回答是:不要访问声明边界以外的数组。请检查,否则这是Java 101类型的问题。我建议你先复习Java,然后再学习Android开发。你有没有考虑过阅读Java文档来了解这个例外?革命性的想法(阅读文档),我知道+答案是。。。但是,我可以使用-1?索引到长度为0的数组中:pWell否,因为0不在范围[0…-1](空集:)内,但可以肯定,空数组的所有最后元素都将在索引-1;-)处找到