1

この記事の目次



このページは「JAVAの多次元配列」の演習問題です。「JAVAの多次元配列」の基礎を学びたい方はこちらで参考してください。

1.  2次元配列の作成


問題:キーボードから2次元配列の行数、列数、各要素に値を入力する。要素の最大値を求める。

解答例
package helloworld;

import java.util.Arrays;
import java.util.Scanner;

public class HelloWorld {
      
    public static void main(String[] args) {
        
        int row, column;
         
        Scanner scanner = new Scanner(System.in);

        System.out.print("2次元の行数を入力: ");
        row = scanner.nextInt();
        System.out.print("2次元の列数を入力: ");
        column = scanner.nextInt();

        // 2次元配列の宣言
        int Array[][] = new int[row][column];

        System.out.println("2次元配列の各要素を入力: ");
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < column; j++) {
                System.out.print("Array[" + i + "]["+ j + "] = ");
                Array[i][j] = scanner.nextInt();
            }
        }

        // 配列の要素の最大値を表す変数を初期化する:
        int max = Array[0][0];
        // 配列の要素の最大値を求める
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < column; j++) {
                if (max < Array[i][j]) {
                    max = Array[i][j];
                }
            }
        }
        System.out.print("2次元配列:" + Arrays.deepToString(Array));
        System.out.print("\n要素の最大値 = " + max);
        
    }
    
}

実行結果:
2次元の行数を入力: 3
2次元の列数を入力: 2
2次元配列の各要素を入力: 
Array[0][0] = 1
Array[0][1] = 2
Array[1][0] = 3
Array[1][1] = 4
Array[2][0] = 3
Array[2][1] = 6
2次元配列:[[1, 2], [3, 4], [3, 6]]
要素の最大値 = 6

2.  行列の掛け算


問題:行列Aと行列Bを宣言し、初期化し、行列Aと行列Bの掛け算をする。

解答例
package helloworld;

import java.util.Scanner;

public class HelloWorld {
      
    public static void main(String[] args) {
        
        int m1, n1; //行列Aの行数と列数の宣言
        int m2, n2; //行列Bの行数と列数の宣言
        
        Scanner scanner = new Scanner(System.in);

        System.out.print("行列Aの行数: ");
        m1 = scanner.nextInt();
        System.out.print("行列Aの列数: ");
        n1 = scanner.nextInt();

        System.out.print("行列Bの行数: ");
        m2 = scanner.nextInt();
        System.out.print("行列Bの列数: ");
        n2 = scanner.nextInt();

        int[][] A = new int[m1][n1];
        int[][] B = new int[m2][n2];

        // 行列 C = A * Bを宣言する
        int C[][] = new int[m1][n2];

        
        while (n1 != m2) {
            System.out.println("行列を掛け算するために、「行列Aの列数=行列Bの行数」にならなければなりません。");
            System.out.print("行列Aの列数: ");
            n1 = scanner.nextInt();
            System.out.print("行列Bの行数: ");
            m2 = scanner.nextInt();
        }
        
        // A行列の要素を入力する。
        System.out.println("A行列の要素を入力: ");
        for (int i = 0; i < m1; i++) {
            for (int j = 0; j < n1; j++) {
                System.out.print("A[" + i + "]["+ j + "] = ");
                A[i][j] = scanner.nextInt();
            }
        }

                //B行列の要素を入力する。
        System.out.println("B行列の要素を入力: ");
        for (int i = 0; i < m2; i++) {
            for (int j = 0; j < n2; j++) {
                System.out.print("B[" + i + "]["+ j + "] = ");
                B[i][j] = scanner.nextInt();
            }
        }

        // A,B行列を表示する
        System.out.println("A行列: ");
        for (int i = 0; i < m1; i++) {
            for (int j = 0; j < n1; j++) {
                System.out.print(A[i][j] + "\t");
            }
            System.out.println("\n");
        }

        System.out.println("B行列: ");
        for (int i = 0; i < m2; i++) {
            for (int j = 0; j < n2; j++) {
                System.out.print(B[i][j] + "\t");
            }
            System.out.println("\n");
        }

        // C行列 = A * Bを計算する
        for (int i = 0; i < m1; i++) {
            for (int j = 0; j < n2; j++) {
                C[i][j] = 0;
                for (int k = 0; k < n1; k++) {
                    C[i][j] = C[i][j] + A[i][k] * B[k][j];
                }
            }
        }

        // C行列の表示
        System.out.println("C行列の表示: ");
        for (int i = 0; i < m1; i++) {
            for (int j = 0; j < n2; j++) {
                System.out.print(C[i][j] + "\t");
            }
            System.out.println("\n");
        }     
        
    }
    
}

実行結果:
行列Aの行数: 2
行列Aの列数: 3
行列Bの行数: 3
行列Bの列数: 2
A行列の要素を入力: 
A[0][0] = 2
A[0][1] = 3
A[0][2] = 1
A[1][0] = 4
A[1][1] = 5
A[1][2] = 2
B行列の要素を入力: 
B[0][0] = 3
B[0][1] = 1
B[1][0] = 2
B[1][1] = 5
B[2][0] = 2
B[2][1] = 1
A行列: 
2	3	1	

4	5	2	

B行列: 
3	1	

2	5	

2	1	

C行列の表示: 
14	18	

26	31	
広告