模範解答・解説(サンプルコード付き)
それでは、前回の 配列 練習問題(全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 | 全要素の繰り返し |
| 応用 | 入力・合体・逆順 | 実務でよく出る |
