用矩阵类进行矩阵基本运算、矩阵的构造函数等代码实现
矩阵测试代码
基本思路:先定义两个数组arr1与arr2,再用Matrix类创建两个对象m1、m1,此时arr1和arr2是被作为实参传递进Matrix类中,进行矩阵相加运算和矩阵相乘运算,最后打印出结果。
public class MatrixTest{
public static void main(String[] args) {
//定义数组
int[][] arr1 = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
int[][] arr2 = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
Matrix m1 = new Matrix(arr1);
Matrix m2 = new Matrix(arr2);
Matrix m3 = m1.add(m2);
Matrix m4 = m2.multi(m1);
//在屏幕打印输出矩阵,方便用户查看矩阵的值
System.out.println(m1.toString());
System.out.println(m2.toString());
System.out.println(m3.toString());
System.out.println(m4.toString());
}
}
定义Matrix类
class Matrix {
//定义一个用于接收的数组
private int[][] matArray;
//定义行数
private int row;
//定义列数
private int col;
}
Matrix的构造函数
//构造函数
public Matrix (int[][] mArray) {
//让行列数等于传递进来的数组行列数
this.row = mArray.length;
this.col = mArray[0].length;
//把传递进来的数组地址赋给用于接收的数组
this.matArray = mArray;
}
用字符串表示矩阵内容
//用字符串表示矩阵内容
public String toString() {
String s = "[";
for (int i = 0; i < matArray.length; i++) {
s += "[";
for (int j = 0; j < matArray[0].length; j++) {
s += matArray[i][j];
if (j!= 0 || j!= matArray.length-1 ){
s+=",";
}
}
s += "]";
}
s += "]";
return s;
}
返回矩阵行列数
//返回矩阵行数
public int getRow (){
int count = 0;
for (int i = 0;i<matArray.length;i++){
count +=1;
}
return count;
}
//返回矩阵列数
public int getCol() {
int count = 0;
for (int i = 0; i < matArray[0].length; i++) {
count += 1;
}
return count;
}
矩阵相加
//矩阵相加
public Matrix add(Matrix m) {
if (m.isNull() == true || m.isRegular() == false || this.isNull() == true || this.isRegular() == false) {
System.out.println("该操作不合法");
}
int add[][] = new int[this.row][this.col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
add[i][j] = this.matArray[i][j] + m.matArray[i][j];
}
}
Matrix ad = new Matrix(add);
return ad;
}
矩阵相乘
//用于对两个数组中存储的矩阵进行乘法运算
public Matrix multi(Matrix m) {
if (m.isNull() ==true || m.isRegular() == false || this.isNull() == true || this.isRegular() == false && this.matArray[0].length == m.matArray.length) {
System.out.println("该操作不合法");
}
int mutil[][] = new int[this.row][m.col];
for (int i = 0; i < this.row; i++) {
for (int j = 0; j < m.col; j++) {
for (int k = 0; k < this.col; k++) {
mutil[i][j] += this.matArray[i][k] * m.matArray[k][j];
}
}
}
Matrix mu = new Matrix(mutil);
return mu;
}
检测矩阵是否为空
//检测矩阵是否为空
private boolean isNull(){
boolean k = false;
if (this.row == 0 || this.col ==0 ){
}
else{
k =false;
}
return k;
}
检测矩阵是否每行元素数量一致(默认每行元素相同)
//检测是否每行元素数量一致,默认每行元素相同
private boolean isRegular(){
boolean k =true;
for (int i = 1;i<row;i++){
if (this.matArray[0].length == this.matArray[i].length){
}else{
k = false;
break;
}
}
return k;
}