是什么导致java.lang.arrayindexoutofboundsexception以及如何防止它?

ef1yzkbh  于 2021-06-29  发布在  Java
关注(0)|答案(17)|浏览(466)

是什么 ArrayIndexOutOfBoundsException 我的意思是我该怎么摆脱它?
下面是触发异常的代码示例:

String[] names = { "tom", "bob", "harry" };
for (int i = 0; i <= names.length; i++) {
    System.out.println(names[i]);
}
mec1mxoz

mec1mxoz16#

对于长度为n的任何数组,数组元素的索引范围为0到n-1。
如果您的程序试图访问数组索引大于n-1的任何元素(或内存),那么java将抛出arrayindexoutofboundsexception
我们可以在程序中使用两种解决方案
保持计数:

for(int count = 0; count < array.length; count++) {
    System.out.println(array[count]);
}

或者像这样的循环语句

int count = 0;
while(count < array.length) {
    System.out.println(array[count]);
    count++;
}

在这种方法中,更好的方法是使用for-each循环

v64noz0r

v64noz0r17#

在代码中,您访问了从索引0到字符串数组长度的元素。 name.length 给出字符串对象数组中字符串对象的数目,即3,但最多只能访问索引2 name[2] ,因为可以从索引0到 name.length - 1 你去哪了 name.length 对象数。
即使在使用 for 循环以索引0开始,应该以 name.length - 1 . 在数组a[n]中,可以从a[0]访问a[n-1]。
例如:

String[] a={"str1", "str2", "str3" ..., "strn"};

for(int i=0; i<a.length(); i++)
    System.out.println(a[i]);

就你而言:

String[] name = {"tom", "dick", "harry"};

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n');
}

相关问题