java.lang.ArrayIndexOutOfBoundsException の原因は何ですか? また、それを防ぐにはどうすればよいですか? 質問する

java.lang.ArrayIndexOutOfBoundsException の原因は何ですか? また、それを防ぐにはどうすればよいですか? 質問する

どういうArrayIndexOutOfBoundsException意味ですか?また、どうすれば取り除けますか?

例外をトリガーするコードサンプルを次に示します。

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

ベストアンサー1

まず最初に訪れるべきはドキュメンテーションこれはかなり明確に説明しています:

配列が不正なインデックスでアクセスされたことを示すためにスローされます。インデックスは負の値か、配列のサイズ以上です。

たとえば次のようになります。

int[] array = new int[5];
int boom = array[10]; // Throws the exception

これを回避する方法は... うーん、そうしないでください。配列のインデックスに注意してください。

時々遭遇する問題の1つは、配列が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 ループを使用できる場合は、それを使用してください。)

おすすめ記事