はじめに
Java の配列で最も多いエラーが
インデックスエラー(IndexOutOfBoundsException)。
- 0 から始まるのを忘れる
- length と比較していない
- ループ条件を間違える
- 空配列にアクセスしてしまう
こうしたミスは、初心者だけでなく実務でも頻出です。
この記事では、やさしく・実務寄りに
配列のインデックスエラーの典型例を整理していきます。
まずは基本:配列のインデックスは「0 から始まる」
Java
int[] a = {10, 20, 30};| インデックス | 値 |
|---|---|
| 0 | 10 |
| 1 | 20 |
| 2 | 30 |
有効なインデックスは 0〜(length – 1)
典型例①:範囲外アクセス(length と同じ値を使う)
Java
int[] a = {10, 20, 30};
System.out.println(a[3]); // エラー- length は 3
- 有効範囲は 0〜2
a[3]は存在しないためエラー
典型例②:ループ条件のミス(<= を使ってしまう)
Java
int[] a = {10, 20, 30};
for (int i = 0; i <= a.length; i++) { // ← ミス
System.out.println(a[i]); // 最後にエラー
}正しい書き方
Java
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}<= を使うと最後に 1 回余分にアクセスしてしまう。
典型例③:空配列にアクセスしてしまう
Java
int[] a = new int[0];
System.out.println(a[0]); // エラー- length が 0
- 有効なインデックスが存在しない
典型例④:配列の長さを勘違いする(3つあるのに 4 つあると思う)
Java
int[] a = new int[3]; // 要素数 3
a[3] = 100; // エラー配列の長さは 固定。 new int[3] なら 0〜2 の 3 つだけ。
典型例⑤:多次元配列のインデックスを間違える
Java
int[][] matrix = {
{1, 2},
{3, 4}
};
System.out.println(matrix[0][2]); // エラーmatrix[0]の長さは 2- 有効範囲は 0〜1
[2]は存在しない
典型例⑥:配列を動的に変更できると誤解する
Java
int[] a = new int[3];
a[3] = 10; // サイズを増やすことはできない配列は固定長。
サイズを変えたい場合は List を使う。
典型例⑦:String.split() の結果を過信する
Java
String[] parts = "a,b,".split(",");
System.out.println(parts[2]); // エラーになることがあるsplit の仕様によっては
末尾の空要素が削除される ため、
期待した長さにならないことがある。
インデックスエラーを防ぐためのポイント
① length を正しく使う
Java
for (int i = 0; i < arr.length; i++) { ... }② 0 始まりを意識する
③ 空配列の可能性を考える
④ 多次元配列は「行 → 列」の順で確認する
⑤ 配列は固定長であることを忘れない
まとめ
インデックスエラーの典型例
- length と同じ値を使う
- ループ条件を
<=にする - 空配列にアクセス
- 多次元配列の範囲外アクセス
- 配列サイズを増やそうとする
- split の結果を過信する
防ぐポイント
- 0 始まりを意識
- length を正しく使う
- 空配列に注意
- 配列は固定長

decopon
配列のインデックスエラーは、 「0 始まり」「length は最大値ではなく要素数」 この2つを押さえるだけで一気に減らせます。Java Bronze の試験でも、実務のバグ調査でも、 ここを理解しておくと安心して配列を扱えます。あなたの学びが、次のステップにつながりますように。

moco
配列は“0 から始まる箱の列”。
最後の箱は length – 1。
このイメージがあると、エラーがぐっと減るよ。

コメント