什么ArrayIndexOutOfBoundsException意思,我该如何摆脱它?以下是触发异常的代码示例:String[] name = { "tom", "dick", "harry" };for (int i = 0; i <= name.length; i++) {
System.out.println(name[i]);}
3 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
您的第一个停靠点应该是合理清楚地解释它的文档:
抛出以指示已使用非法索引访问数组。索引为负数或大于或等于数组的大小。
例如:
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循环,请执行此操作。)
波斯汪
TA贡献1811条经验 获得超4个赞
if (index < 0 || index >= array.length) { // Don't use this index. This is out of bounds (borders, limits, whatever).} else { // Yes, you can safely use this index. The index is present in the array. Object element = array[index];}
也可以看看:
更新:根据您的代码段,
for (int i = 0; i<=name.length; i++) {
索引包含数组的长度。这是出界的。您需要替换<=
的<
。
for (int i = 0; i < name.length; i++) {
一只斗牛犬
TA贡献1784条经验 获得超2个赞
简而言之:
在最后一次迭代中
for (int i = 0; i <= name.length; i++) {
i
将等于name.length
哪个是非法索引,因为数组索引是从零开始的。
你的代码应该阅读
for (int i = 0; i < name.length; i++)
添加回答
举报
0/150
提交
取消