Java | 配列の初期化

Java Java
スポンサーリンク

模範解答・解説(サンプルコード付き)

それでは、前回の 配列 練習問題(全10問) に対応する
👉 全問の解答+解説つき完全版 をまとめます。

初心者でも理解しやすいように、
各問に コード → 出力例 → ポイント解説 をセットで載せています。


レベル1:配列の基礎(宣言・代入・出力)

問1:配列の作成と出力

整数型の配列 nums(要素数3)を作り、それぞれ 10, 20, 30 を代入して出力。

public class Q1 {
    public static void main(String[] args) {
        int[] nums = new int[3];
        nums[0] = 10;
        nums[1] = 20;
        nums[2] = 30;

        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
    }
}
Java

🖥 出力例:

10
20
30

💡 ポイント:

  • 配列インデックスは 0 から始まる。
  • .length で要素数を取得できる(3固定でもOKだが癖をつけよう)。

問2:初期化リテラルの利用

public class Q2 {
    public static void main(String[] args) {
        String[] colors = {"赤", "青", "緑"};

        for (int i = 0; i < colors.length; i++) {
            System.out.println(colors[i]);
        }
    }
}
Java

🖥 出力例:

赤
青
緑

💡 ポイント:

  • {} で初期化すれば new は不要。
  • String 配列も基本は数値と同じ扱い。

問3:配列の長さを使う

public class Q3 {
    public static void main(String[] args) {
        double[] data = {1.2, 3.4, 5.6, 7.8};

        for (int i = 0; i < data.length; i++) {
            System.out.println(data[i]);
        }

        System.out.println("配列の長さ: " + data.length);
    }
}
Java

🖥 出力例:

1.2
3.4
5.6
7.8
配列の長さ: 4

💡 ポイント:

  • .length は配列の「プロパティ」(メソッドではない)。
  • () は付けない(length() はエラー)。

レベル2:計算・条件付き処理

問4:合計と平均

public class Q4 {
    public static void main(String[] args) {
        int[] scores = {80, 90, 70, 100};
        int sum = 0;

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

        double avg = (double) sum / scores.length;
        System.out.println("合計: " + sum);
        System.out.println("平均: " + avg);
    }
}
Java

🖥 出力例:

合計: 340
平均: 85.0

💡 ポイント:

  • int / int だと小数切り捨てになるので (double) キャストが大事。

問5:最大値と最小値

public class Q5 {
    public static void main(String[] args) {
        int[] nums = {3, 8, 2, 10, 6};
        int max = nums[0];
        int min = nums[0];

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

        System.out.println("最大値: " + max);
        System.out.println("最小値: " + min);
    }
}
Java

🖥 出力例:

最大値: 10
最小値: 2

💡 ポイント:

  • 初期値は nums[0] にする(0に固定すると誤動作の可能性あり)。

問6:条件を満たす要素だけ出力

public class Q6 {
    public static void main(String[] args) {
        int[] nums = {12, 5, 8, 20, 7};

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] >= 10) {
                System.out.println(nums[i]);
            }
        }
    }
}
Java

🖥 出力例:

12
20

💡 ポイント:

  • if を使って「必要な値だけ」取り出す。
  • 配列を絞り込みたい時は、のちに Stream API で簡潔に書けるようになる。

レベル3:ユーザー入力 × 配列

問7:成績管理ミニアプリ

import java.util.Scanner;

public class Q7 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("人数を入力してください: ");
        int n = sc.nextInt();

        int[] scores = new int[n];
        for (int i = 0; i < n; i++) {
            System.out.print((i + 1) + "人目の点数: ");
            scores[i] = sc.nextInt();
        }

        int sum = 0;
        for (int score : scores) {
            sum += score;
        }

        double avg = (double) sum / scores.length;
        System.out.println("平均点は " + avg + " です。");
        sc.close();
    }
}
Java

🖥 出力例:

人数を入力してください: 3
1人目の点数: 80
2人目の点数: 70
3人目の点数: 90
平均点は 80.0 です。

💡 ポイント:

  • new int[n] で「ユーザーが指定した人数分」の配列を動的に作成できる。
  • for-each(拡張for)で合計を簡潔に計算。

問8:買い物カゴ(文字列配列)

import java.util.Scanner;

public class Q8 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("商品をいくつ追加しますか?: ");
        int n = sc.nextInt();
        sc.nextLine(); // 改行除去

        String[] cart = new String[n];

        for (int i = 0; i < n; i++) {
            System.out.print((i + 1) + "つ目の商品名: ");
            cart[i] = sc.nextLine();
        }

        System.out.println("---- カート内容 ----");
        for (String item : cart) {
            System.out.println(item);
        }
        sc.close();
    }
}
Java

🖥 出力例:

商品をいくつ追加しますか?: 3
1つ目の商品名: りんご
2つ目の商品名: バナナ
3つ目の商品名: みかん
---- カート内容 ----
りんご
バナナ
みかん

💡 ポイント:

  • nextLine() の前に nextInt() を使ったら、改行を捨てる行 (sc.nextLine()) が必要。
  • 配列を使うことで複数データを一時的にまとめられる。

レベル4:応用・思考力問題

問9:逆順に並べ替え

import java.util.Arrays;

public class Q9 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5};
        int i = 0;
        int j = nums.length - 1;

        while (i < j) {
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
            i++;
            j--;
        }

        System.out.println(Arrays.toString(nums));
    }
}
Java

🖥 出力例:

[5, 4, 3, 2, 1]

💡 ポイント:

  • 一時変数 tmp で左右を入れ替え。
  • Arrays.toString() は配列全体を文字列化する便利メソッド。

問10:2つの配列を合体

import java.util.Arrays;

public class Q10 {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {4, 5};

        int[] result = new int[a.length + b.length];

        // a のコピー
        for (int i = 0; i < a.length; i++) {
            result[i] = a[i];
        }

        // b のコピー
        for (int i = 0; i < b.length; i++) {
            result[a.length + i] = b[i];
        }

        System.out.println(Arrays.toString(result));
    }
}
Java

🖥 出力例:

[1, 2, 3, 4, 5]

💡 ポイント:

  • new int[a.length + b.length] で新しい配列を確保。
  • 後半のコピーでは a.length + i がインデックスのずれを補正。

まとめ:配列の実力アップポイント

概念キーワード覚えておくこと
宣言int[] a配列変数を作る
生成new int[3]要素数を指定して確保
初期化{1,2,3}同時に値を設定
要素アクセスa[0], a[i]0始まり
長さ取得a.lengthメソッドではない
ループ処理for / for-each全要素の繰り返し
応用入力・合体・逆順実務でよく出る
タイトルとURLをコピーしました