3

在这种情况下是否可以避免 ArrayIndexOutOfBoundsException ?

package com;

public class Hi {

    public static void main(String args[]) {

        String[] myFirstStringArray = new String[] { "String 1", "String 2",
                "String 3" };

        if (myFirstStringArray[3] != null) {
            System.out.println("Present");
        } else {
            System.out.println("Not Present");
        }

    }

}
4

3 回答 3

6

也许我不明白真正的问题,但是在这种情况下,是什么阻止您在访问它之前检查索引是否在数组内?

if (myIndex < myFirstStringArray.length) {
    System.out.println("Present");
} else {
    System.out.println("Not Present");
}
于 2013-07-18T12:08:07.833 回答
2

在数组中,它们的测量方式与数字不同。数组中的第一个对象被认为是 0。因此,在您的 if 语句中,您只需输入 2 而不是 3。

if (myFirstStringArray[3] != null) {
        System.out.println("Present");

 if (myFirstStringArray[2] != null) {
        System.out.println("Present");

希望这可以帮助!:)

于 2013-07-18T12:07:10.413 回答
0

您的String数组包含 3 个元素,并且您正在访问数组 [3],即第 4 个元素作为基于 0 的索引,因此您会收到此错误(无论如何都是异常)。

避免ArrayIndexOutOfBoundsException使用指定索引范围内的索引。并始终检查您的索引是否为>= array.length.

于 2013-07-18T12:07:50.440 回答