In: Computer Science
Test all of the methods in the code below:
Instantiate several Matrix objects of different sizes.
Make a Matrix copy from an excisting Matrix
Test the equals method to show one matrix being equal and one matrix not being equal
display 2 matrices using a toString method
display a mtrix object before and after multiplying by a scalar after
display a matrix object before and after multiplying by 0
test the matrix by matrix multiplication with at least 3 different matrix objects that test different outcomes of the method including the exception
Source Code:
public class Matrix { private int rows, columns; private int[][] data; public Matrix(int r, int c) { data = new int[r][c]; rows = r; columns = c; } public Matrix copyMatrix() { Matrix m = new Matrix(rows, columns); for(int i = 0; i < rows; i++) for(int j = 0; j < columns; j++) m.data[i][j] = data[i][j]; return m; } public boolean equals(Matrix m) { if(rows == m.rows && columns == m.columns) { for(int i = 0; i < rows; i++) { for(int j = 0; j < columns; j++) { if(m.data[i][j] != data[i][j]) return false; } } return true; } else return false; } public String toString() { String s = ""; for(int i = 0; i < rows; i++) { for(int j = 0; j < columns; j++) { s += String.format("%5d ", data[i][j]); } s += "\n"; } return s; } public void scalarMultiply(int k) { for(int i = 0; i < rows; i++) for(int j = 0; j < columns; j++) data[i][j] *= k; } public Matrix multiply(Matrix m) { if(columns != m.rows) //can't perform multiplication return null; Matrix A = new Matrix(rows, m.columns); for(int i = 0; i < rows; i++) { for(int j = 0; j < m.columns; j++) { for(int k = 0; k < columns; k++) A.data[i][j] += data[i][k] * m.data[k][j]; } } return A; } public void set(int r, int c, int val) { if(r >= 0 && r < rows && c >= 0 && c < columns) data[r][c] = val; } }
TestMain.java
public class TestMain {
//static method which creates matrix object using two dimensional
Array
public static void createMatrixObject(Matrix
matObject,int[][] X,int r,int c)
{
for(int i=0;i<r;i++)
for(int
j=0;j<c;j++)
matObject.set(i, j, X[i][j]);
}
public static void main(String[] args) {
//initialize various two dimensional
Arrays
int[][] A= {{4,3,2},{5,3,1},{3,7,9}};
int[][] B= { {2,5},{6,8}};
int[][] C= { {8,9,7},{4,5,6},{1,5,3}};
int[][] D= { {1,0,0},{0,1,0},{0,0,1}};
int[][] E= { {5,2},{6,3},{2,7}};
//creating Matrix objects
Matrix matObjA = new Matrix(3,3);
createMatrixObject(matObjA,A,3,3);
Matrix matObjB = new Matrix(2,2);
createMatrixObject(matObjB,B,2,2);
Matrix matObjC = new Matrix(3,3);
createMatrixObject(matObjC,C,3,3);
Matrix matObjD = new Matrix(3,3);
createMatrixObject(matObjD,D,3,3);
Matrix matObjE = new Matrix(3,2);
createMatrixObject(matObjE,E,3,2);
//copying one matrix object into another
System.out.println("\n Copy Matrix A into another
Matrix :");
Matrix matACopy = matObjA.copyMatrix();
//comapring two matrix objects
System.out.println("\n Comparing Matrices matObjA and
matACopy :"+matObjA.equals(matACopy));
System.out.println("\n Comapring Matrices matObjA and
matObjC :"+matObjA.equals(matObjC));
//displaying two matrix object using toString()
method
System.out.println("\n Displaying Matrix
A:\n"+matObjA.toString());
System.out.println("\n Displaying Matrix
E:\n"+matObjE.toString());
//multiplying matrix object with scalar 10
System.out.println("\n Displaying matObjB before
multiplying with a scalar :\n"+matObjB.toString());
matObjB.scalarMultiply(10);
System.out.println("\n Displaying matObjB after
multiplying with a scalar 10 :\n"+matObjB.toString());
//multiplying matrix object with scalar 0
System.out.println("\n Displaying matObjE before
multiplying with a scalar :\n"+matObjE.toString());
matObjE.scalarMultiply(0);
System.out.println("\n Displaying matObjE after
multiplying with a scalar 0 :\n"+matObjE.toString());
//multiplying matrix object with another matrix
object
Matrix resMatObj=matObjA.multiply(matObjB);
System.out.println("\n Multiplying matrix objects A
and B :");
if(resMatObj==null)
System.out.println("\n Matix
multiplication not possible");
resMatObj=matObjA.multiply(matObjC);
if(resMatObj!=null)
System.out.println("\n Multiplying
matrix objects A and C :\n"+resMatObj.toString());
resMatObj=matObjC.multiply(matObjD);
if(resMatObj!=null)
System.out.println("\n Multiplying
matrix objects C and D :\n"+resMatObj.toString());
}
}
OUTPUT :