Матрица умножения Arrayoutofindexerror - PullRequest
0 голосов
/ 15 апреля 2020

Учитывая 2 матрицы, хранящиеся в 2 разных 2D массивах, вы должны распечатать произведение 2 матриц. Если умножение между ними невозможно, выведите Impossible

  1. r1 c1: количество строк и столбцов первой матрицы, за которыми следует первая матрица

  2. r2 c2: количество строк и столбцов второй матрицы, за которыми следует вторая матрица

Ниже приведен код для умножения двух матриц с использованием класса сканера, но он показывает следующую ошибку

Исключение в потоке "main" java .lang.ArrayIndexOutOfBoundsException: 13 at Main.main (Main. java: 40)

Тестовый случай неизвестен, но показывает вышеуказанную ошибку

import java.util.Scanner;
class Main{
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();
        while(t--!=0)
        {
            int r1=sc.nextInt();
            int c1=sc.nextInt();
            int a[][]=new int[r1][c1];
            for(int i=0;i<r1;i++)
            {
                for(int j=0;j<c1;j++)
                {
                    a[i][j]=sc.nextInt();
                }
            }
            int r2=sc.nextInt();
            int c2=sc.nextInt();
            int b[][]=new int[r2][c2];
            int c[][]=new int[r1][c2];
            for(int i=0;i<r2;i++)
            {
                for(int j=0;j<c2;j++)
                {
                    b[i][j]=sc.nextInt();
                }
            }
            if(c1==r2){

                for(int i=0;i<r2;i++)
            {
                for(int j=0;j<c1;j++)
                {
                    c[i][j]=0;
                    for(int k=0;k<r1;k++)
                {
                        c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
                    }
                    System.out.print(c[i][j]+" ");
                }
                System.out.println();
            }            
            }
                    else
                System.out.println("Impossible");
        }
    }
}
...