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

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

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

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

wkftcu5l16#

ArrayIndexOutOfBoundsException 意味着您正试图访问不存在或超出此数组界限的数组索引。数组索引从0开始,长度为-1。
对你来说

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n'); // i goes from 0 to length, Not correct
}
``` `ArrayIndexOutOfBoundsException` 尝试访问不存在的name.length索引元素(数组索引以长度-1结尾)时发生。只要将<=替换为<=就可以解决这个问题。

for(int i = 0; i < name.length; i++) {
System.out.print(name[i] +'\n'); // i goes from 0 to length - 1, Correct
}

mzillmmw

mzillmmw17#

你越来越 ArrayIndexOutOfBoundsException 由于 i<=name.length 部分。 name.length 返回字符串的长度 name ,也就是3。因此,当您尝试访问 name[3] ,它是非法的,并引发异常。
解析代码:

String[] name = {"tom", "dick", "harry"};
for(int i = 0; i < name.length; i++) { //use < insteadof <=
  System.out.print(name[i] +'\n');
}

它是在java语言规范中定义的:
这个 public final 字段 length ,它包含数组的组件数。 length 可以是正或零。

相关问题