2021-10-01矩阵类、矩阵基本运算、矩阵的构造函数等代码实现

矩阵测试代码

基本思路:先定义两个数组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;
     }

运行结果

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白开水就盒饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值