A matrix can be represented in Java as a three dimensional array with the length of the 3D array equal to the number of rows of the matrix and the length of the sub arrays equal to the number of columns of the matrix.Once the two matrices are read, we use a two level nested for loop with loop counters similar to the ones used for adding the matrices. The elements at [i][j] of the two input matrices are added and the result is stored at position [i][j] of the result matrix.

import java.util.Scanner;
class MatrixMultiplication
{
public static void main(String args[])
{
int m, n, p, q, sum = 0, c, d, k;
Scanner in = new Scanner(System.in);
System.out.println("Enter the number of rows and columns of first matrix");
m = in.nextInt();
n = in.nextInt();
int first[][] = new int[m][n];
System.out.println("Enter the elements of first matrix");
for ( c = 0 ; c < m ; c++ )
for ( d = 0 ; d < n ; d++ )
first[c][d] = in.nextInt();
System.out.println("Enter the number of rows and columns of second matrix");
p = in.nextInt();
q = in.nextInt();
if ( n != p )
System.out.println("Matrices with entered orders can't be multiplied with each other.");
else
{
int second[][] = new int[p][q];
int multiply[][] = new int[m][q];
System.out.println("Enter the elements of second matrix");
for ( c = 0 ; c < p ; c++ )
for ( d = 0 ; d < q ; d++ )
second[c][d] = in.nextInt();
for ( c = 0 ; c < m ; c++ )
{
for ( d = 0 ; d < q ; d++ )
{
for ( k = 0 ; k < p ; k++ )
{
sum = sum + first[c][k]*second[k][d];
}
multiply[c][d] = sum;
sum = 0;
}
}
System.out.println("Product of entered matrices:-");
for ( c = 0 ; c < m ; c++ )
{
for ( d = 0 ; d < q ; d++ )
System.out.print(multiply[c][d]+"\t");
System.out.print("\n");
}
}
}
}

## Output :

Enter the number of rows and columns of matrix
3 3
Enter the elements of first matrix
1 2 3
4 5 6
7 8 9
Enter the number of rows and columns of matrix
3 3
Enter the elements of first matrix
9 8 7
6 5 4
3 2 1
product of entered matrices is
30 24 18
84 69 54
138 114 90

## Algorithm :

- Initialize the matrix.

- use a two level nested for loop with loop counters.

- similar to the ones used for adding the matrices.

## Comments :