// 2020/4/17(金)~18(土)
import java.util.Scanner;
/* public */ class Gyoretsu2 {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); int matrixSize = 0;
for (int i = 1; i <= 5; i++) {
System.
out.
println("正方行列の積を求めます\n行列のサイズを選択して下さい(10まで、半角)"); matrixSizeStr = scanner.nextLine();
try {
matrixSize
= Integer.
parseInt(matrixSizeStr
); System.
out.
println("半角の整数を入力して下さい\n"); continue;
}
if (matrixSize < 1 || matrixSize > 10) {
System.
out.
println("半角で1から10までの整数を入力して下さい\n"); } else {
break;
}
}
if (matrixSize == 0) return;
matrixProduct(matrixSize);
}
public static void matrixProduct(int matrixSize) {
Scanner scanner
= new Scanner
(System.
in); if (matrixSize < 1 || matrixSize > 10) {
System.
out.
println("行列の大きさは10以下の自然数にして下さい"); return;
}
double[][] A = new double[matrixSize][matrixSize]; // a b c d a b c d
double[][] B = new double[matrixSize][matrixSize]; // e f g h e f g h
double[][] P = new double[matrixSize][matrixSize]; // i j k l i j k l
// m n o p m n o p
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
System.
out.
println("行列Aの要素" + (i
+ 1) + "行" + (j
+ 1) + "列目の値を入力して下さい"); A[i][j] = scanner.nextDouble();
}
}
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
System.
out.
println("行列Bの要素" + (i
+ 1) + "行" + (j
+ 1) + "列目の値を入力して下さい"); B[i][j] = scanner.nextDouble();
}
}
for (int i = 0; i < matrixSize; i++) {
for (int j = 0; j < matrixSize; j++) {
for (int k = 0; k < matrixSize; k++) {
P[i][j] += A[i][k] * B[k][j];
}
System.
out.
println("求める行列の" + (i
+ 1) + "行" + (j
+ 1) + "列目の要素は、" + P
[i
][j
] + "です"); }
}
}
}