java.lang.ArrayIndexOutOfBoundsException 解決方法

Java言語では、例外のエラー出ます。

その中で”java.lang.ArrayIndexOutOfBoundsException”というエラーメッセージが出たときの原因と解決方法を紹介します。

原因

配列のインデックスで存在しない番号を指定した際に発生するエラーです。

インデックスとは、配列の特定の位置を指し示すための数です。

配列は、複数の値を並べた構造で、その配列の中の値(要素)を取り出すためにインデックスで指定してあげる必要があるわけです。

逆にインデックス番号がなければ、特定の要素を取り出すことができません。

解決方法

配列のサイズを確認し、その配列で存在するインデックスを指定してあげましょう。

よくある間違い例として

Javaの場合、インデックスは最初を0とし、最後を要素数-1とする必要があります。

しかし、初心者は、最初を1として、最後を要素数にしてしまいがちになります。

class Main{
    public static void main(String[] args){
        int [] array = {10,20,30,40,50};
        for (int i = 1;i <= 5; i++){
            //最初の要素は、array[0]
            //array[5]は、存在しない
            System.out.println(array[i]);
        }
    }
}

このように要素を取り出す際、初期化処理、繰り返し条件などを設定するためエラーが発生しやすくなります。

配列を全要素取り出す場合であれば、以下のように記述するとことで、今回のエラーは出なくなります。

class Main{
    public static void main(String[] args){
        int [] array = {10,20,30,40,50};
        for (value : array){
            System.out.println(value);
        }
    }
}

まとめ

”java.lang.ArrayIndexOutOfBoundsException”というエラーは、

配列のインデックスで存在しない番号を指定した際に発生する。

従って、配列のサイズを確認し、存在するインデックス番号を指定すること。