1. ホーム
  2. java

[解決済み] java.lang.ArrayIndexOutOfBoundsExceptionが発生する原因とその対策について教えてください。

2022-03-17 14:41:49

質問事項

とは何ですか? ArrayIndexOutOfBoundsException の意味と、それを取り除くにはどうしたらよいでしょうか?

例外を発生させるコードサンプルはこちらです。

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

解決方法は?

最初に呼び出すべきは ドキュメント には、それなりにわかりやすく説明されています。

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

だから例えば

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ループを代わりに使えるのであれば、そうしてください)。