Java入門 〜配列でデータをまとめて管理する〜
この記事で学べること
- 配列とは何か、なぜ必要なのか
- 配列の宣言と初期化の方法
- 配列の要素へのアクセス方法
- 配列と繰り返し処理の組み合わせ
- 配列を使った実践的なプログラム
- よくあるエラーと解決方法
はじめに – 今日やること
前回の振り返りです!
前回は、繰り返し処理(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]
これに慣れるまで、少し時間がかかるかもしれません。焦らず慣れていきましょう!
つまずいた時は
エラーが出た時、焦らず以下を確認してください:
- インデックスは範囲内か? →
i < scores.lengthを使う - 配列は初期化されているか? →
new int[5]または{値, 値, …} - インデックスは0から始まっているか? → 1番目は
[0]
エラーは、成長のチャンスです!
「またエラーかぁ」じゃなくて、「お、また1つ覚えるチャンスだ!」くらいの気持ちで取り組みましょう!
次に学ぶべきこと
長い間、お疲れ様でした!
今日は、配列を学びましたね。
今日学んだこと
- 配列の基本(宣言、初期化、アクセス)
- 配列と繰り返し処理の組み合わせ
- 配列を使った実践的なプログラム(合計、平均、最大値など)
- よくあるエラーと解決方法(ArrayIndexOutOfBoundsExceptionなど)
これで、大量のデータを効率的に扱える ようになりました!
これから何をすべきか
これからは、たくさん書いて動かすことが一番の勉強です!
自分で配列を作ったり、繰り返しと組み合わせたりして、どんどん実験してみてください。
失敗しても大丈夫。何度でもやり直せます。
これまで学んだこと
ここまでのJava入門シリーズで学んだことを整理すると:
変数 + if文 + 繰り返し + 配列 = もっと複雑なプログラムが書ける!
前回までの「変数」「if文」「繰り返し処理」だけでも、理論上はどんなプログラムでも書けました。
そこに今回の 配列 が加わったことで、大量のデータを扱うプログラム が書けるようになったんです!
これは、本当に大きな進歩ですよ。
よく頑張りましたね!
次のステップ: メソッドを学ぼう
次は、メソッド(Method) を学んでいきます!
メソッドを学ぶと:
- 処理をまとめて、何度も使い回せる
- コードが短く、読みやすくなる
- もっと楽にプログラムが作れる
実は、これから学ぶこと(メソッド、クラスなど)は、すべて「僕たちが楽をするために作られた仕組み」なんです。
焦らず、一緒に頑張りましょう!
まとめ
お疲れ様でした!今日学んだことを振り返ってみましょう。
今日のポイント
✅ 配列は、同じ種類のデータをまとめて管理できる仕組み
✅ 配列のインデックスは 0から 始まる
✅ 配列の要素数はlengthで取得できる
✅ 配列と繰り返し処理を組み合わせると強力
✅ ArrayIndexOutOfBoundsExceptionに注意する
今日、あなたは「大量のデータを効率的に扱う力」を手に入れました!
変数、if文、繰り返し、そして配列で、プログラミングの基礎がさらに強化されましたね。
この調子で、次のステップに進みましょう!
次に読むべき記事
次は、メソッドを学んで、処理をまとめて何度も使い回せるようにしましょう!
- Java入門 〜メソッドで処理をまとめよう〜(公開: 5月予定) メソッドを使って、コードを短く、読みやすくする方法を学びます。
前回・関連記事
- Java入門 〜繰り返し処理をマスターする〜
前回の記事です。for文とwhile文を学びましたね! - Java入門 〜if文で条件分岐をマスターする〜
条件によって処理を変える方法を学びました! - Java入門 〜変数とデータ型を理解する〜
変数でデータを保存する方法を学びました!
質問や感想をお待ちしています!
この記事でわからなかったことや、つまずいたポイントがあれば、お気軽にコメント欄やお問い合わせフォームからご連絡ください!
また、「配列がわかりました!」の報告も大歓迎です。一緒に喜びたいです!
それでは、次の記事でお会いしましょう!

