是什么 ArrayIndexOutOfBoundsException 我的意思是我该怎么摆脱它?下面是触发异常的代码示例:
ArrayIndexOutOfBoundsException
String[] names = { "tom", "bob", "harry" }; for (int i = 0; i <= names.length; i++) { System.out.println(names[i]); }
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
for (int index = 0; index < array.length; index++)
(当然,这是假设你需要索引。如果可以改用增强的for循环,请这样做。)
ukxgm1gy17#
来自这篇优秀的文章:for循环中的arrayindexoutofboundsexception简而言之:在的最后一次迭代中
for (int i = 0; i <= name.length; i++) { ``` `i` 将等于 `name.length` 这是非法索引,因为数组索引是基于零的。 你的代码应该是
for (int i = 0; i < name.length; i++)^
17条答案
按热度按时间s6fujrry16#
您的第一个停靠港应该是合理清楚地解释它的文档:
抛出以指示已使用非法索引访问数组。索引为负数或大于或等于数组的大小。
例如:
至于如何避免。。。呃,别那么做。小心数组索引。
人们有时遇到的一个问题是认为数组是1索引的,例如。
这将丢失第一个元素(索引0),并在索引为5时引发异常。这里的有效索引包括0-4。正确的,惯用的
for
这里的声明是:(当然,这是假设你需要索引。如果可以改用增强的for循环,请这样做。)
ukxgm1gy17#
来自这篇优秀的文章:for循环中的arrayindexoutofboundsexception
简而言之:
在的最后一次迭代中
for (int i = 0; i < name.length; i++)
^