JavaのArrayIndexOutOfBoundsExceptionについて
Javaでプログラミングを行う際、配列を使用するときにArrayIndexOutOfBoundsExceptionというエラーに遭遇することがあります。
このエラーは、配列の範囲外のインデックスにアクセスしようとしたときに発生します。つまり、存在しない配列の要素にアクセスしようとしたときにこのエラーが出ます。
Javaのエラー一覧はコチラ
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る
ArrayIndexOutOfBoundsExceptionが発生する例
例1: 配列の範囲外にアクセス
エラーが発生するソースコード
1 2 3 4 5 6 |
public class Main { public static void main(String[] args) { int[] array = new int[5]; array[5] = 10; } } |
上記のプログラムはArrayIndexOutOfBoundsExceptionを発生させます。なぜなら、配列arrayのサイズは5(インデックスは0から4まで)なのに、存在しないインデックス5にアクセスしようとしているからです。
対処後のソースコード
1 2 3 4 5 6 |
public class Main { public static void main(String[] args) { int[] array = new int[5]; array[4] = 10; } } |
配列のインデックスは0から始まるので、配列の長さが5の場合、有効なインデックスは0から4までとなります。
したがって、array[5]をarray[4]に変更すれば、エラーは発生しません。
出力結果
エラーなし
エラーが解消され、正常にプログラムが実行されます。
このように、配列のインデックスを適切に管理することで、ArrayIndexOutOfBoundsExceptionを避けることができます。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
例2: ループの範囲指定ミス
エラーが発生するソースコード
1 2 3 4 5 6 7 8 |
public class Main { public static void main(String[] args) { int[] array = new int[5]; for (int i = 0; i <= array.length; i++) { array[i] = i * 10; } } } |
上記のプログラムでもArrayIndexOutOfBoundsExceptionが発生します。
この例では、forループの条件式が配列の長さと等しい値までループを回しているため、存在しないインデックスにアクセスしてエラーが発生しています。
対処後のソースコード
1 2 3 4 5 6 7 8 |
public class Main { public static void main(String[] args) { int[] array = new int[5]; for (int i = 0; i < array.length; i++) { array[i] = i * 10; } } } |
配列の長さは5ですが、配列のインデックスは0から始まるため、最後の要素のインデックスは4になります。
したがって、forループの条件式をi <= array.lengthからi < array.lengthに変更すれば、エラーは発生しません。
出力結果
エラーなし
エラーが解消され、プログラムが正常に実行されます。
このように、ループを使用する際は、配列の長さを超えないように注意が必要です。
例3: 配列の初期化ミス
エラーが発生するソースコード
1 2 3 4 5 6 |
public class Main { public static void main(String[] args) { int[] array = null; array[0] = 10; } } |
上記のコードでもArrayIndexOutOfBoundsExceptionが発生します。なぜなら、arrayがnullで初期化されており、まだ実際の配列が存在していないからです。
対処後のソースコード
1 2 3 4 5 6 |
public class Main { public static void main(String[] args) { int[] array = new int[5]; array[0] = 10; } } |
nullとは、何も参照していない状態を示す特殊な値です。
したがって、arrayがnullの状態でarray[0]にアクセスしようとすると、エラーが発生します。
arrayを実際の配列で初期化することで、エラーは発生しません。
出力結果
エラーなし
エラーが解消され、プログラムが正常に実行されます。
このように、配列を使用する際は、適切に初期化することが重要です。
まとめ
JavaのArrayIndexOutOfBoundsExceptionは、配列の範囲外のインデックスにアクセスしたときに発生します。
これは主に次の3つのケースで起こります:
主なエラー発生ケース
- 配列の範囲外にアクセスしたとき
- ループの範囲指定ミス
- 配列の初期化ミス
これらのエラーは、配列の範囲を正しく理解し、配列を適切に初期化することで避けることができます。
これらの基本的な原則を理解し、適切に適用することで、ArrayIndexOutOfBoundsExceptionのエラーを回避できるでしょう。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
Javaのエラー一覧はコチラ
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る