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 :
