Javaプログラミング練習問題(配列)

Java

こんにちは。ECF Tech ブログ担当 Michiharu.Tです。

Javaプログラミング向け練習問題、今回のテーマは配列です。たくさんのデータを扱うプログラムでは配列は欠かせない要素です。また、配列の扱いはループをいかに使えるかがカギとなってきます。ぜひJavaの学習にお役立てください。 一般的なJavaの学習順序に沿ったテーマの一覧(※随時追加)は、こちらのリンクよりご確認頂けます。
Javaプログラミング

Javaのトピックスです。主に初心者向けにプログラミング学習ネタを提供していきます。

解説動画

2023/01/27 解説動画を掲載しました。

問題編

Q001

問題

  • forループを使って、配列arrayの内容を実行結果のとおりに表示してください。

提供コード

public class Quiz001 {
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5 };
        //ここにプログラムを書きます。
    }
}

実行結果

1
2
3
4
5
import java.util.Scanner;

public class Quiz001 {
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5 };
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

Q002

問題

  • forループを使って、配列arrayの各要素の値を2倍にして表示してください。

提供コード

public class Quiz002 {
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5 };
        //ここにプログラムを書きます。

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

実行結果

2
4
6
8
10
public class Quiz002 {
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5 };
        for (int i = 0; i < array.length; i++) {
            array[i] *= 2;
        }
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

Q003

問題

配列aの各値と配列bの各値の合計を、配列cの各要素に代入する プログラムを作成してください。

例えば、 配列aの0番目にある1と配列bの0番目にある6を足した7が 配列cの0番目に入ります。

提供コード

public class Quiz003{
    public static void main(String[] args) {
        int[] a = { 1, 2, 3, 4, 5 };
        int[] b = { 6, 7, 8, 9, 10 };
        int[] c = new int[5];

        //ここにプログラムを書きます

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

実行結果

7
9
11
13
15
public class Quiz003{
    public static void main(String[] args) {
        int[] a = { 1, 2, 3, 4, 5 };
        int[] b = { 6, 7, 8, 9, 10 };
        int[] c = new int[5];
        for (int i = 0; i < a.length; i++) {
            c[i] = a[i] + b[i];
        }
        for (int i = 0; i < c.length; i++) {
            System.out.println(c[i]);
        }
    }
}

Q004

問題

配列arrayのもつ二次元配列を、二重ループを使って表示してください。

提供コード

public class Quiz004 {
    public static void main(String[] args) {
        int[][] array = {
            { 1, 8, 12, 17, 20 },
            { 2, 5, 11, 13, 18 },
            { 4, 6, 9, 19, 21 }
        };
        //ここからプログラムを書きます。
    }
}

実行結果

1 8 12 17 20
2 5 11 13 18
4 6 9 19 21
public class Quiz004 {
    public static void main(String[] args) {
        int[][] array = {
            { 1, 8, 12, 17, 20 },
            { 2, 5, 11, 13, 18 },
            { 4, 6, 9, 19, 21 }
        };
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
    }
}

Q005

問題

配列scoreの内容を実行結果のとおりに表示します。

  • 1回目は配列の内容を順番に表示します。
  • 2回目は得点の多い順に表示します。配列rankの値を上手く使います。 ※配列rankにはscore内で高い得点が入っている要素順に値が並んでいます。 例えば rankの最初には1が入っています。これは配列scoreの1番目 に一番高い得点90が入っていることを表しています。

提供コード

public class Quiz005 {
    public static void main(String[] args) {
        int[] score = { 45, 90, 75, 60, 80 };
        int[] rank = { 1, 4, 2, 3, 0 };

        System.out.println("----- 出席番号順 -----");
        //出席番号順の表示
        for (int i = 0; i < score.length; i++) {
            //ここにプログラムを書きます
        }
        System.out.println("----- 得点順 -----");        
        //得点の高い順に表示
        for (int i = 0; i < score.length; i++){
            //ここにプログラムを書きます
        }
    }
}

実行結果

----- 出席番号順 -----
1番:45点
2番:90点
3番:75点
4番:60点
5番:80点
----- 得点順 -----
1位:90点
2位:80点
3位:75点
4位:60点
5位:45点
public class Quiz005 {
    public static void main(String[] args) {
        int[] score = { 45, 90, 75, 60, 80 };
        int[] rank = { 1, 4, 2, 3, 0 };

        System.out.println("----- 出席番号順 -----");
        //出席番号順の表示
        for (int i = 0; i < score.length; i++) {
            System.out.println((i + 1) + "番:" + score[i] + "点");
        }
        System.out.println("----- 得点順 -----");        
        //得点の高い順に表示
        for (int i = 0; i < score.length; i++){
            System.out.println((i+1) + "位:" + score[rank[i]] + "点");
        }
    }
}

おわりに

いかがでしたでしょうか。ループや配列の動きを理解するには、プログラムの流れを丁寧に追いかける作業(トレース)が重要です。必要に応じて値を変えてみたり、`System.out.println`を使って途中途中の値を表示してみたりしながら、動きをつかんでみてください。


合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。

ECFエデュケーション
タイトルとURLをコピーしました