Design methods using the following headings int add x int y
Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return references to the sum and product matrices. If the dimensions of x and y are not compatible with addition (multiplication), then the method should issue an appropriate error message and exit. Test your methods in a program. Include two additional methods that print the contents of a two-dimensional array, and read data, row by row, into a two-dimensional array.
Solution
Please follow the code and comments for description :
CODE :
import java.util.Scanner;
public class MatrixAddMul { // clas to run the code
public static int[][] add(int[][] x, int[][] y) { // desired method to return the array that is added as the result
int aRows = x.length; // getting the data from the arrays
int aColumns = x[0].length;
int bRows = y.length;
int bColumns = y[0].length;
if (aColumns != bRows) {
throw new IllegalArgumentException(\"x:Rows: \" + aColumns + \" did not match y:Columns \" + bRows + \".\");
}
int[][] res = new int[aRows][bColumns]; //initialising the array for the result
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
res[i][j] = 0;
}
}
for (int i = 0; i < aRows; i++) { // aRow
for (int j = 0; j < bColumns; j++) { // bColumn
res[i][j] = x[i][j] + y[i][j];
}
}
return res; // return the result
}
public static int[][] multiply(int[][] x, int[][] y) { // desired method to return the multiplied matrix
int aRows = x.length; // required data for the array
int aColumns = x[0].length;
int bRows = y.length;
int bColumns = y[0].length;
if (aColumns != bRows) { // checking for the multiplication condition
throw new IllegalArgumentException(\"x : Rows : \" + aColumns + \" did not match with the y : Columns : \" + bRows + \".\");
}
int[][] C = new int[aRows][bColumns]; // resultant array initialisation
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
C[i][j] = 0;
}
}
for (int i = 0; i < aRows; i++) { // aRow
for (int j = 0; j < bColumns; j++) { // bColumn
for (int k = 0; k < aColumns; k++) { // aColumn
C[i][j] += x[i][k] * y[k][j]; // saving the data to the array
}
}
}
return C; // return the result array
}
public static void printArray(int[][] result) { // method to print the array
int aRows = result.length; // required initialisations
int bRows = result.length;
for (int i = 0; i < aRows; i++) { // aRow
for (int j = 0; j < bRows; j++) { // bColumn
System.out.print(result[i][j] + \" \");
}
System.out.println();
}
}
public static int[][] insertArray() { // method to insert data to the array
Scanner in = new Scanner(System.in); // scanner class that reads the data from the user
int m, n, c, d;
System.out.println(\"Please Enter the Details of the Matrix.\"); // prompt for the user about the code
System.out.println(\"Enter the Number of Rows : \");
m = in.nextInt(); // get the row value
System.out.println(\"Enter the Number of Columns : \");
n = in.nextInt(); // get the column value
int array[][] = new int[m][n]; // creating a new matrix
System.out.println(\"Enter the Elements of the Matrix : \");
for (c = 0; c < m; c++) {
for (d = 0; d < n; d++) {
array[c][d] = in.nextInt(); // saving the data to the matrix
}
}
return array; // returnt the result
}
public static void main(String[] args) { // driver method
int firstArray[][] = insertArray(); // inserting the data to the array through method call
int secondArray[][] = insertArray(); // inserting the data to the array through method call
int[][] addResult = add(firstArray, secondArray); // calling the method to return the added array as result
System.out.println(\"\ The Added Matrix is : \"); // print the data to console
printArray(addResult); // method that prints the data
int[][] mulResult = multiply(firstArray, secondArray); // calling the method to return the multiplied array as result
System.out.println(\"\ The Multiplied Matrix is : \");// print the data to console
printArray(mulResult);// method that prints the data
}
}
OUTPUT :
Please Enter the Details of the Matrix.
Enter the Number of Rows :
2
Enter the Number of Columns :
2
Enter the Elements of the Matrix :
1
2
3
4
Please Enter the Details of the Matrix.
Enter the Number of Rows :
2
Enter the Number of Columns :
2
Enter the Elements of the Matrix :
5
6
7
8
The Added Matrix is :
6 8
10 12
The Multiplied Matrix is :
19 22
43 50
Hope this is helpful.
![Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return r Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return r](/WebImages/1/design-methods-using-the-following-headings-int-add-x-int-y-965925-1761494933-0.webp)
![Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return r Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return r](/WebImages/1/design-methods-using-the-following-headings-int-add-x-int-y-965925-1761494933-1.webp)
![Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return r Design methods using the following headings: int [][] add[][] x, int[][] y), int [][] multiply[][] x, int[][] y) that add and multiply two matrices and return r](/WebImages/1/design-methods-using-the-following-headings-int-add-x-int-y-965925-1761494933-2.webp)