【Java】レッスン2-7:配列の基本を理解しよう

ながみえ

一つ前のページでは繰り返しを制御について学習しました。

今回は 配列 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編

 ・Lesson2-1:比較演算子と論理演算子を理解しよう
 ・Lesson2-2:if文による分岐処理を理解しよう
 ・Lesson2-3:switch文による分岐処理を理解しよう
 ・Lesson2-4:for文による繰り返し処理を理解しよう
 ・Lesson2-5:while文による繰り返し処理を理解しよう
 ・Lesson2-6:繰り返しを制御しよう
 ・Lesson2-7:配列を理解しよう ◁今回はココ
 ・Lesson2-8:エラーメッセージを読めるようになろう
 ・Lesson2-9:例外処理を理解しよう
 ・確認問題2-☆1:ハイアンドロー ゲームを作ろう
 ・確認問題2-☆2:数字当てゲームを作ろう
 ・確認問題2-☆3:じゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

配列の基礎|定義・宣言・初期化と計算例

配列とは、複数のデータをまとめて管理するためのもっとも基本的な仕組みです。

変数では1つの値しか扱えませんが、配列を使えば同じ型のデータをまとめて扱い、効率的に処理できます。

ゲームのスコア管理や商品リストの操作など、実践的な場面でも役立つ力です。

この記事では、配列の宣言方法、初期化、要素の取得・更新といった基礎をわかりやすく解説し、理解を深める練習問題も用意しました。

さっそく読み進めて、配列を自由に扱える第一歩を踏み出しましょう。

配列とは何か?|基本的な書き方とコード例

配列とは同じデータ型の要素を連続して格納するためのデータ構造です。

配列はデータ型と配列名、そして配列に格納される要素から構成されます。

型[] 配列名 = {要素1, 要素2, ...}

例えば5科目のテストの点数を格納するときに、これまでなら5つの変数を準備していましたが、配列を使えば一つの変数に5つの点数を格納できるようになります。

//テストの点数を変数で保管
int Language = 80;
int Mathematics = 70;
int Science = 100;
int Social = 75;
int English = 60;

//テストの点数を配列で保管
int[] Score = {80, 70, 100, 75, 60};	// int型の配列Scoreを定義し、5つの整数を格納

配列は一つの変数名で複数の要素を管理でき、各要素には「インデックス」と呼ばれる番号を使ってアクセスします。

このコードで定義した配列Scoreの場合、インデックス0の値は80,1の値は70,4の値は60となります。

System.out.println(Score[0])	// 出力:80
System.out.println(Score[1])	// 出力:70
System.out.println(Score[2])	// 出力:100
System.out.println(Score[3])	// 出力:75
System.out.println(Score[4])	// 出力:60

またJavaの配列はサイズが固定されており、一度作成するとそのサイズを変更できません。そのため配列は同じ型のデータを決まった数だけ扱う際に適しています。

配列の宣言と初期化|書き方と代表例

配列を使用するためにはまず配列の宣言と初期化を行います。

直接要素を書き込む方法と、newキーワード を使って配列のサイズを指定する方法があります。

// 配列の宣言と初期化(値を指定して初期化)
String[] fruits = {"apple", "banana", "grape"};

// 配列の宣言と初期化(サイズ指定)
int[] scores = new int[3];

上記の例では fruits という配列には初めから値を格納しています。このように直接値を指定して初期化する方法は「初期化リスト」と呼ばれます。

また2つ目の例では scores という名前の配列に3つの整数を格納するためのスペースを確保しています。(空の配列を宣言している)。

配列で合計・平均を計算する|for文とlengthの実践例

それでは配列を使って実際にデータを操作する例を見てみましょう。

以下は配列内のデータにアクセスし、合計を計算するプログラムの例です。

組み込みメソッド .length()を使用し、配列の要素数を取得して使用しています。

public class ArrayExample {
    public static void main(String[] args) {
        // 配列の宣言と初期化
        int[] scores = {85, 90, 78};

        // 合計値を計算
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {	// iの値が、0から始めて配列の要素数になるまで、インクリメントしながら
            sum += scores[i];						// 配列の要素を変数sumに加える
        }

        // 平均値を計算して出力
        double average = (double) sum / scores.length;
        System.out.println("合計: " + sum);
        System.out.println("平均: " + average);
    }
}

このプログラムではscores 配列に3つのスコアが格納されており、for ループを使用して合計を計算しています。

その後、合計を要素数で割り平均を求めています。

配列の要素を取り出す・書き換える方法

配列の要素にアクセスするには、インデックスを指定します。

また、特定の要素を変更するにはそのインデックスに新しい値を代入します。

// String型の配列の操作例
String[] names = {"太郎", "次郎", "三郎"};

// 要素の取得
System.out.println(names[0]); // 出力: 太郎

// 要素の更新
names[2] = "史郎";
System.out.println(names[2]); // 出力: 史郎

このように配列のインデックスを利用することで、特定の要素を取得したり更新したりすることができます。

まとめ|配列で複数データを扱う基礎を習得

本章では、配列の基本(配列とは何か/宣言/初期化/要素の取り出し)を押さえ、forループと組み合わせて合計や平均を計算する一連の流れを体験しました。

これで、単一の変数では扱いづらかった複数データをまとめて管理し、繰り返し処理で効率よく計算・更新できるようになりました。

身近な点数や商品価格など、リスト状のデータ処理に自信を持って取り組めるはずです。

小さな成功を重ねれば、コードは確実に思い通りに動かせるようになります。

練習問題|配列の平均値を計算するプログラムを作ろう

5つの整数(10 , 20 , 30 , 40 , 50)を含む配列を作成し、それらの平均値を計算して出力するプログラムを作成してください。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • 配列 numbers に 10, 20, 30, 40, 50 を格納すること。
  • 配列 numbers の全要素の合計を計算し、その合計を使って平均値を求めること。
  • 平均値は小数点以下も表示すること。

ただし、以下のような実行結果となること。

平均値: 30.0

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1:AverageCalculatorクラスの定義
  □ mainメソッドの定義
  □ □ int型配列numbersの初期化と5つの整数の設定
  □ □ int型変数sumの初期化
  □ □ forループで配列numbersの全要素を順に合計
  □ □ □ sumにnumbersの要素を加算
  □ □ double型変数averageの初期化と平均値の計算
  □ □ System.out.printlnで平均値を出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

public class AverageCalculator {
    public static void main(String[] args) {
        /*【穴埋め問題1】
        ここにint型配列numbersを初期化し、5つの整数を設定するコードを書いてください。
        */

        /*【穴埋め問題2】
        ここに合計を格納するためのint型変数sumを初期化するコードを書いてください。
        */

        // 配列の全要素を順に足し合わせる
        /*【穴埋め問題3】
        ここにforループを使用して配列numbersの全要素を合計するコードを書いてください。
        */

        /*【穴埋め問題4】
        ここにdouble型変数averageを初期化し、平均値を計算するコードを書いてください。
        */

        /*【穴埋め問題5】
        ここでSystem.out.println()を使用して、平均値を出力するコードを書いてください。
        */
    }
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
public class AverageCalculator {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50}; // 5つの整数を含む配列を作成
        int sum = 0; // 合計を格納する変数を初期化

        // 配列の全要素を順に足し合わせる
        for (int i = 0; i < numbers.length; i++) {
            sum += numbers[i];
        }

        // 平均値を計算(合計を要素数で割る)
        double average = (double) sum / numbers.length;
        System.out.println("平均値: " + average); // 平均値を出力
    }
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

クラスとメインメソッドの定義

public class AverageCalculator {
    public static void main(String[] args) {
  • クラス定義 (public class AverageCalculator):プログラム全体を「AverageCalculator」というクラスとして定義します。Javaのコードは、基本的にクラスの中に書かれます。
  • メインメソッド (public static void main(String[] args)):プログラムの実行が始まる場所です。mainメソッドはJavaプログラムのエントリーポイントとなり、必ずこの形式で書かれます。

配列の宣言と初期化

        int[] numbers = {10, 20, 30, 40, 50}; // 5つの整数を含む配列を作成
  • 配列の宣言と初期化int[] numbers = {10, 20, 30, 40, 50}; の部分で、numbersという名前の配列を宣言し、整数値を5つ格納しています。配列は複数のデータを一つの変数で管理するために使われます。intは「整数」を表すデータ型であり、int[]は「整数の配列」を意味します。
  • 配列の初期化{10, 20, 30, 40, 50} で、配列numbersに5つの整数が最初から入っています。

合計を格納する変数の初期化

        int sum = 0; // 合計を格納する変数を初期化

変数の宣言と初期化int sum = 0; によって、合計を保存するための整数型変数sumを宣言し、初期値を0に設定します。

これで配列の各要素を足していく際にsumに合計が蓄積されていきます。

配列の各要素の合計を計算

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

forループ (for (int i = 0; i < numbers.length; i++)):このループは、iという変数を使って配列の要素に一つずつアクセスし、全ての要素の合計を計算します。

  • numbers.length は配列numbersの要素数を取得し、ループが配列の最後まで繰り返すようにしています。
  • sum += numbers[i];で、配列numbersの各要素をsumに加算します。+=は加算代入演算子で、sum = sum + numbers[i];と同じ意味です。

平均値の計算

        double average = (double) sum / numbers.length;

平均値の計算:この行では、変数averageに合計sumを配列の要素数numbers.lengthで割った結果を格納しています。

結果の出力

        System.out.println("平均値: " + average); // 平均値を出力
    }
}

出力System.out.printlnを使って平均値を出力します。"平均値: " + averageで、「平均値:」という文字列と計算結果のaverageを一緒に表示しています。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました