fork download
  1. // 2020/4/17(金)~18(土)
  2.  
  3. import java.util.Scanner;
  4.  
  5. /* public */ class Gyoretsu2 {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8. String matrixSizeStr;
  9. int matrixSize = 0;
  10. for (int i = 1; i <= 5; i++) {
  11. System.out.println("正方行列の積を求めます\n行列のサイズを選択して下さい(10まで、半角)");
  12. matrixSizeStr = scanner.nextLine();
  13. try {
  14. matrixSize = Integer.parseInt(matrixSizeStr);
  15. } catch (NumberFormatException e) {
  16. System.out.println("半角の整数を入力して下さい\n");
  17. continue;
  18. }
  19. if (matrixSize < 1 || matrixSize > 10) {
  20. System.out.println("半角で1から10までの整数を入力して下さい\n");
  21. } else {
  22. break;
  23. }
  24. }
  25. if (matrixSize == 0) return;
  26.  
  27. matrixProduct(matrixSize);
  28. }
  29.  
  30. public static void matrixProduct(int matrixSize) {
  31. Scanner scanner = new Scanner(System.in);
  32. if (matrixSize < 1 || matrixSize > 10) {
  33. System.out.println("行列の大きさは10以下の自然数にして下さい");
  34. return;
  35. }
  36. double[][] A = new double[matrixSize][matrixSize]; // a b c d a b c d
  37. double[][] B = new double[matrixSize][matrixSize]; // e f g h e f g h
  38. double[][] P = new double[matrixSize][matrixSize]; // i j k l i j k l
  39. // m n o p m n o p
  40. for (int i = 0; i < matrixSize; i++) {
  41. for (int j = 0; j < matrixSize; j++) {
  42. System.out.println("行列Aの要素" + (i + 1) + "行" + (j + 1) + "列目の値を入力して下さい");
  43. A[i][j] = scanner.nextDouble();
  44. }
  45. }
  46. for (int i = 0; i < matrixSize; i++) {
  47. for (int j = 0; j < matrixSize; j++) {
  48. System.out.println("行列Bの要素" + (i + 1) + "行" + (j + 1) + "列目の値を入力して下さい");
  49. B[i][j] = scanner.nextDouble();
  50. }
  51. }
  52.  
  53. for (int i = 0; i < matrixSize; i++) {
  54. for (int j = 0; j < matrixSize; j++) {
  55. for (int k = 0; k < matrixSize; k++) {
  56. P[i][j] += A[i][k] * B[k][j];
  57. }
  58. System.out.println("求める行列の" + (i + 1) + "行" + (j + 1) + "列目の要素は、" + P[i][j] + "です");
  59. }
  60. }
  61. }
  62. }
Runtime error #stdin #stdout #stderr 0.17s 38592KB
stdin
2
1
2
3
4
4
3
2
1
stdout
正方行列の積を求めます
行列のサイズを選択して下さい(10まで、半角)
行列Aの要素1行1列目の値を入力して下さい
stderr
Exception in thread "main" java.util.NoSuchElementException
	at java.base/java.util.Scanner.throwFor(Scanner.java:937)
	at java.base/java.util.Scanner.next(Scanner.java:1594)
	at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
	at Gyoretsu2.matrixProduct(Main.java:43)
	at Gyoretsu2.main(Main.java:27)