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

yfjy0ee7  于 2021-06-30  发布在  Java
关注(0)|答案(17)|浏览(456)

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

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

s6fujrry16#

您的第一个停靠港应该是合理清楚地解释它的文档:
抛出以指示已使用非法索引访问数组。索引为负数或大于或等于数组的大小。
例如:

int[] array = new int[5];
int boom = array[10]; // Throws the exception

至于如何避免。。。呃,别那么做。小心数组索引。
人们有时遇到的一个问题是认为数组是1索引的,例如。

int[] array = new int[5];
// ... populate the array here ...
for (int index = 1; index <= array.length; index++)
{
    System.out.println(array[index]);
}

这将丢失第一个元素(索引0),并在索引为5时引发异常。这里的有效索引包括0-4。正确的,惯用的 for 这里的声明是:

for (int index = 0; index < array.length; index++)

(当然,这是假设你需要索引。如果可以改用增强的for循环,请这样做。)

ukxgm1gy

ukxgm1gy17#

来自这篇优秀的文章:for循环中的arrayindexoutofboundsexception
简而言之:
在的最后一次迭代中

for (int i = 0; i <= name.length; i++) {
``` `i` 将等于 `name.length` 这是非法索引,因为数组索引是基于零的。
你的代码应该是

for (int i = 0; i < name.length; i++)
^

相关问题