java - 是什么导致java.lang.ArrayIndexOutOfBoundsException,如何防止它?

标签 java

ArrayIndexOutOfBoundsException是什么意思,我如何摆脱它?

这是触发异常的代码示例:

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

最佳答案

您的第一个 call 端口应该是documentation,它可以相当清楚地解释它:

Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.



因此,例如:
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(含0和4)。正确,惯用的for语句如下:
for (int index = 0; index < array.length; index++)

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

关于java - 是什么导致java.lang.ArrayIndexOutOfBoundsException,如何防止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49812164/

相关文章:

java - Solr:支持希腊语的音译/转录

java - 从控制台菜单调用继承该方法的类的方法

java - 如何将字符串列表从 JMeter 传递到 Java 代码

java - Android 共享 Intent 不起作用

java - 为什么java中需要Boolean(boolean)构造函数?

java - 将图像调整为固定大小,如果需要添加边框

Java - 在当前时间和 future 设定时间之间创建一个时间间隔(15 分钟)数组

Java if-if-else 行为

java - 当我编译此代码时,出现“整数太大”之类的错误。虽然我声明它很长,但我不知道为什么它显示错误?

java - 使用 JTextArea 并使用附加文本或字符串 (out.println) 创建 Swing 控制台