この記事で学べること

  • 配列とは何か、なぜ必要なのか
  • 配列の宣言と初期化の方法
  • 配列の要素へのアクセス方法
  • 配列と繰り返し処理の組み合わせ
  • 配列を使った実践的なプログラム
  • よくあるエラーと解決方法

はじめに – 今日やること

前回の振り返りです!

前回は、繰り返し処理(for文、while文) を学びました。

同じ処理を何度も実行できるようになって、プログラムがぐっと楽になりましたよね!

これで「変数 + if文 + 繰り返し」という、プログラミングの基礎の3点セットが揃いました。

そして今回は、たくさんのデータをまとめて管理できる仕組み、「配列(Array)」について学びます!

例えば、生徒10人の点数や、1週間の気温の記録、ゲームのアイテムリストなど。こういう「複数のデータ」を扱う場面って、実はめちゃくちゃ多いんです。

そんな時に配列を知っているかどうかで、コードの書きやすさが全然変わります!

今日のゴール

  • 配列を使って、複数のデータをまとめて管理できる
  • 配列と繰り返し処理を組み合わせて、効率的なプログラムが書ける
  • 大量のデータを扱うプログラムが作れるようになる

焦らず、ゆっくり進めていきましょう!

配列って何? なぜ必要?

配列がないと、こんなに大変!

突然ですが、皆さんに質問です。

「5人の生徒の点数を管理したい」 としたら、どう書きますか?

配列を知らないと、こう書くしかありません:

int score1 = 85;
int score2 = 90;
int score3 = 78;
int score4 = 92;
int score5 = 88;

System.out.println("1番目の生徒: " + score1);
System.out.println("2番目の生徒: " + score2);
System.out.println("3番目の生徒: " + score3);
System.out.println("4番目の生徒: " + score4);
System.out.println("5番目の生徒: " + score5);

5人ならまだ何とかなりますが、100人だったらどうでしょうか?

変数を100個書いて、System.out.printlnを100回書く…?

正直、しんどくないですか?

配列を使えば、こんなに簡単!

配列を使うと、こう書けます:

int[] scores = {85, 90, 78, 92, 88};

for (int i = 0; i < scores.length; i++) {
    System.out.println((i + 1) + "番目の生徒: " + scores[i]);
}

たった4行で5人分の点数を管理できました!

しかも、100人でも1000人でも、書き方はほぼ同じなんです!

配列とは

配列は、同じ種類のデータをまとめて入れる箱のようなものです。

日常で例えると:

  • ロッカー: 1号、2号、3号…と番号が付いている
  • アパート: 101号室、102号室、103号室…
  • 本棚: 左から1冊目、2冊目、3冊目…

【図: 配列のイメージ(ロッカーや本棚)】

プログラムでも同じで、配列は 番号で区別できる複数の箱 なんです。

配列があると便利な理由

配列を使うと:

  • 大量のデータを1つの変数で管理できる
  • 繰り返し処理との相性が抜群に良い
  • コードがシンプルで読みやすくなる

これから、配列の使い方を一緒に見ていきましょう!

配列の基本 – 宣言と初期化

配列の宣言方法

配列を使うには、まず 宣言 をします。

基本的な書き方はこうです:

データ型[] 配列名;

例えば:

int[] scores;      // int型の配列
String[] names;    // String型の配列
double[] prices;   // double型の配列

ポイントは、[](角カッコ)を付けることです。

これが「配列ですよ」という印なんです!

配列の初期化方法

配列を宣言したら、初期化(値を入れること)をします。

初期化には、いくつか方法があります。

方法1: 宣言と同時に値を入れる

int[] scores = {85, 90, 78, 92, 88};

これが一番シンプルで、よく使われる方法です!

{}(波カッコ)の中に、カンマ,で区切って値を入れます。

方法2: 要素数を指定して作る

int[] scores = new int[5];

これは「int型の配列を5個分用意する」という意味です。

最初は全て 0 で初期化されます。

方法3: 後から値を入れる

int[] scores = new int[5];
scores[0] = 85;
scores[1] = 90;
scores[2] = 78;
scores[3] = 92;
scores[4] = 88;

1つずつ値を入れることもできます。

配列の要素数を取得する

配列が何個の要素を持っているか知りたい時は、lengthを使います:

int[] scores = {85, 90, 78, 92, 88};
System.out.println("要素数: " + scores.length);

実行結果:

要素数: 5

このlength、後で繰り返し処理と組み合わせる時に大活躍します!

覚えておきましょう。

配列の要素にアクセスする

インデックス(番号)で要素を取り出す

配列の各要素は、インデックス(番号)でアクセスできます。

書き方はこうです:

配列名[インデックス]

例えば:

int[] scores = {85, 90, 78, 92, 88};

System.out.println(scores[0]);  // 1番目の要素
System.out.println(scores[1]);  // 2番目の要素
System.out.println(scores[4]);  // 5番目の要素

実行結果:

85
90
88

⚠️ 重要: インデックスは0から始まる!

ここがとても重要なポイントです。

配列のインデックスは、0から始まります

int[] scores = {85, 90, 78, 92, 88};

// インデックス:  0   1   2   3   4
// 値:          85  90  78  92  88
  • 1番目の要素 → インデックス0
  • 2番目の要素 → インデックス1
  • 5番目の要素 → インデックス4

【図: インデックスと要素の関係】

最初は「えっ、1番目なのに0なの?」と混乱するかもしれません。

私も最初はよく間違えました…!

でも大丈夫、慣れれば自然に使えるようになります。

0から数える」と覚えておきましょう!

配列の要素を変更する

配列の要素は、後から変更することもできます:

int[] scores = {85, 90, 78, 92, 88};

System.out.println("変更前: " + scores[2]);

scores[2] = 95;  // 3番目の要素を95に変更

System.out.println("変更後: " + scores[2]);

実行結果:

変更前: 78
変更後: 95

普通の変数と同じように、代入できるんです!

配列と繰り返し処理の組み合わせ

ここからが、配列の本領発揮です!

配列と繰り返し処理を組み合わせると、本当に強力なプログラムが書けるようになります。

例1: 全要素を表示する

int[] scores = {85, 90, 78, 92, 88};

for (int i = 0; i < scores.length; i++) {
    System.out.println((i + 1) + "番目の生徒: " + scores[i]);
}

実行結果:

1番目の生徒: 85
2番目の生徒: 90
3番目の生徒: 78
4番目の生徒: 92
5番目の生徒: 88

ポイント

  • i < scores.lengthで、配列の要素数分だけ繰り返す
  • scores[i]で、各要素にアクセスできる
  • 要素数が変わっても、コードを変更する必要がない!

これが 配列 + 繰り返し の強さなんです!

例2: 合計を計算する

int[] scores = {85, 90, 78, 92, 88};
int sum = 0;

for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
}

System.out.println("合計点: " + sum);

実行結果:

合計点: 433

繰り返すたびに、sumにどんどん点数が足されていきます。

例3: 平均を計算する

int[] scores = {85, 90, 78, 92, 88};
int sum = 0;

for (int i = 0; i < scores.length; i++) {
    sum += scores[i];
}

double average = (double) sum / scores.length;
System.out.println("平均点: " + average);

実行結果:

平均点: 86.6

合計を要素数で割れば、平均が出せます!

例4: 最大値を見つける

int[] scores = {85, 90, 78, 92, 88};
int max = scores[0];  // 最初の要素を、仮の最大値にする

for (int i = 1; i < scores.length; i++) {
    if (scores[i] > max) {
        max = scores[i];
    }
}

System.out.println("最高点: " + max);

実行結果:

最高点: 92

「今までの最大値よりも大きかったら、更新する」という考え方ですね。

繰り返し + if文 + 配列 = もっと強力!

このパターンは、これからもよく使うので覚えておきましょう!

実践: 配列を使ったプログラムを作ろう

ここまでで、配列の基本はバッチリです!

ここからは、実際に使えるプログラムをいくつか作ってみましょう。

「本当に使えるようになった!」と実感できるはずです。

例1: 1週間の気温を管理する

double[] temperatures = {18.5, 20.3, 19.8, 21.2, 22.5, 20.1, 19.3};
String[] days = {"月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"};

System.out.println("=== 1週間の気温 ===");
for (int i = 0; i < temperatures.length; i++) {
    System.out.println(days[i] + ": " + temperatures[i] + "℃");
}

実行結果:

=== 1週間の気温 ===
月曜: 18.5℃
火曜: 20.3℃
水曜: 19.8℃
木曜: 21.2℃
金曜: 22.5℃
土曜: 20.1℃
日曜: 19.3℃

このように、複数の配列を組み合わせて使うこともできるんです!

例2: 80点以上の人数を数える

int[] scores = {85, 90, 78, 92, 88, 75, 95, 82};
int count = 0;

for (int i = 0; i < scores.length; i++) {
    if (scores[i] >= 80) {
        count++;
    }
}

System.out.println("80点以上の人数: " + count + "人");

実行結果:

80点以上の人数: 6人

「条件に合うものだけカウントする」という、よくあるパターンです!

例3: 配列の要素を逆順に表示する

int[] numbers = {1, 2, 3, 4, 5};

System.out.println("逆順:");
for (int i = numbers.length - 1; i >= 0; i--) {
    System.out.println(numbers[i]);
}

実行結果:

逆順:
5
4
3
2
1

ポイント

  • i = numbers.length - 1で、最後のインデックス(4)からスタート
  • i >= 0で、0以上の間繰り返す
  • i--で、1ずつ減らしていく

for文って、増やすだけじゃなく 減らすこともできる んです!

練習問題: 自分で作ってみよう!

ここで、ちょっと自分でも書いてみましょう!

問題1: 配列の最小値を見つける

ヒント: 最大値を見つける例を参考に、><に変えてみましょう

問題2: 偶数だけを表示する

ヒント: scores[i] % 2 == 0 で偶数かどうか判定できます

問題3: 配列の全要素を2倍にして表示する

ヒント: scores[i] * 2で2倍になります

焦らず、1つずつ試してみてくださいね!

うまくいかなくても大丈夫。エラーに遭遇するのも、立派な成長です!

よくあるエラーと注意点

配列を使っていると、必ずエラーに遭遇します。

これは 誰でも通る道 なので、焦らなくて大丈夫です!

ここでは、よくあるエラーと解決方法を紹介します。つまずいた時に、ここを見返してくださいね。

エラー1: ArrayIndexOutOfBoundsException(配列の範囲外)

症状:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5

原因:

int[] scores = {85, 90, 78, 92, 88};  // 要素数5(インデックス0〜4)

System.out.println(scores[5]);  // エラー! インデックス5は存在しない

配列の要素数は5なので、インデックスは 0〜4まで です。

インデックス5にアクセスしようとすると、エラーになってしまいます。

解決方法:

// 良い例
for (int i = 0; i < scores.length; i++) {  // i < 5 なので、0〜4まで
    System.out.println(scores[i]);
}

i < scores.lengthを使えば、範囲外にアクセスすることはありません!

これ、本当によくあるミスなんです…!私も初心者の頃、何度もハマりました。

エラー2: NullPointerException(配列が初期化されていない)

症状:

Exception in thread "main" java.lang.NullPointerException

原因:

int[] scores = null;  // nullで初期化(中身がない状態)

System.out.println(scores[0]);  // エラー! scoresの中身がない

配列の「箱」自体が用意されていないのに、中の要素にアクセスしようとするとエラーになります。

解決方法:

// 良い例
int[] scores = new int[5];  // ちゃんと初期化する

System.out.println(scores[0]);  // OK(0が表示される)

配列を使う前に、必ず初期化しましょう!

注意点1: 配列の要素数は固定

配列は、一度作ったら 要素数を変更できません

int[] scores = {85, 90, 78};  // 要素数3

// 後から4つに増やすことはできない!

要素数を変更したい場合は、新しい配列を作り直す必要があります。

(後で学ぶArrayListを使えば、サイズを変えられる配列もありますが、それはまた次回!)

注意点2: インデックスは0から

何度も言いますが、インデックスは0から始まります

int[] scores = {85, 90, 78, 92, 88};

// 1番目の要素 → scores[0]
// 5番目の要素 → scores[4]

これに慣れるまで、少し時間がかかるかもしれません。焦らず慣れていきましょう!

つまずいた時は

エラーが出た時、焦らず以下を確認してください:

  1. インデックスは範囲内か?i < scores.lengthを使う
  2. 配列は初期化されているか?new int[5]または{値, 値, …}
  3. インデックスは0から始まっているか? → 1番目は[0]

エラーは、成長のチャンスです!

「またエラーかぁ」じゃなくて、「お、また1つ覚えるチャンスだ!」くらいの気持ちで取り組みましょう!

次に学ぶべきこと

長い間、お疲れ様でした!

今日は、配列を学びましたね。

今日学んだこと

  • 配列の基本(宣言、初期化、アクセス)
  • 配列と繰り返し処理の組み合わせ
  • 配列を使った実践的なプログラム(合計、平均、最大値など)
  • よくあるエラーと解決方法(ArrayIndexOutOfBoundsExceptionなど)

これで、大量のデータを効率的に扱える ようになりました!

これから何をすべきか

これからは、たくさん書いて動かすことが一番の勉強です!

自分で配列を作ったり、繰り返しと組み合わせたりして、どんどん実験してみてください。

失敗しても大丈夫。何度でもやり直せます。

これまで学んだこと

ここまでのJava入門シリーズで学んだことを整理すると:

変数 + if文 + 繰り返し + 配列 = もっと複雑なプログラムが書ける!

前回までの「変数」「if文」「繰り返し処理」だけでも、理論上はどんなプログラムでも書けました。

そこに今回の 配列 が加わったことで、大量のデータを扱うプログラム が書けるようになったんです!

これは、本当に大きな進歩ですよ。

よく頑張りましたね!

次のステップ: メソッドを学ぼう

次は、メソッド(Method) を学んでいきます!

メソッドを学ぶと:

  • 処理をまとめて、何度も使い回せる
  • コードが短く、読みやすくなる
  • もっと楽にプログラムが作れる

実は、これから学ぶこと(メソッド、クラスなど)は、すべて「僕たちが楽をするために作られた仕組み」なんです。

焦らず、一緒に頑張りましょう!

まとめ

お疲れ様でした!今日学んだことを振り返ってみましょう。

今日のポイント

✅ 配列は、同じ種類のデータをまとめて管理できる仕組み
✅ 配列のインデックスは 0から 始まる
✅ 配列の要素数はlengthで取得できる
✅ 配列と繰り返し処理を組み合わせると強力
✅ ArrayIndexOutOfBoundsExceptionに注意する

今日、あなたは「大量のデータを効率的に扱う力」を手に入れました!

変数、if文、繰り返し、そして配列で、プログラミングの基礎がさらに強化されましたね。

この調子で、次のステップに進みましょう!

次に読むべき記事

次は、メソッドを学んで、処理をまとめて何度も使い回せるようにしましょう!

  • Java入門 〜メソッドで処理をまとめよう〜(公開: 5月予定) メソッドを使って、コードを短く、読みやすくする方法を学びます。

前回・関連記事

質問や感想をお待ちしています!

この記事でわからなかったことや、つまずいたポイントがあれば、お気軽にコメント欄やお問い合わせフォームからご連絡ください!

また、「配列がわかりました!」の報告も大歓迎です。一緒に喜びたいです!

それでは、次の記事でお会いしましょう!