Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么ArrayIndexOutOfBoundsException会出现,以及如何在Android中避免它?_Java_Android_Indexoutofboundsexception - Fatal编程技术网

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;-)处找到