矩阵乘法java实现

矩阵算法小练.

import java.util.Scanner;
//矩阵乘法运算
public class Matrix {
    public double[][] datas;//数据元素
    public int rows;//行数
    public int cols;//列数
    public Matrix(int r, int c){
        datas = new double[r][c];//创建一个二维数组对象,行和列共同构成一个数据元素
        this.rows = r;
        this.cols = c;
    }
    public Matrix multip(Matrix X){
        //先判断当前矩阵的列数是否与所乘矩阵的行数相等,若不相等,不符合相乘的条件
        if(this.cols != X.rows ){
            return null;
        }
        Matrix c = new Matrix(this.rows,X.cols);//构建一个新的矩阵,存放相乘后的结果 mxn . nxs = mxs
        for(int i = 0; i<this.rows;i++){//矩阵要乘的行数
            for(int j = 0;j<X.cols;j++){//每一行要乘的列数
                for(int k = 0;k<X.rows;k++){//控制相加的次数  也可用this.col
                    c.datas[i][j] += this.datas[i][k]*X.datas[k][j];
                }
            }
        }
        return c;
    }
    public void display(){//打印矩阵                                                                                                                                                                                                
        if(this == null) return;
        for(int i = 0;i<this.rows;i++){
            for(int j = 0;j<this.cols;j++){
                System.out.print(this.datas[i][j]+"\t");
            }
            System.out.println();
        }

    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入要相乘的第一个矩阵...");
        System.out.println("请输入矩阵的行数。。。");
        int r = scan.nextInt();
        System.out.println("请输入矩阵的列数。。。");
        int c = scan.nextInt();
        Matrix m = new Matrix(r,c);
        System.out.println("请以此输入矩阵元素。。。");
        for(int i = 0; i<r;i++){
            for(int j = 0; j<c;j++){
                m.datas[i][j] = scan.nextDouble();
            }
        }
        m.display();
        System.out.println("请输入要相乘的另一个矩阵...");
        System.out.println("请输入矩阵的行数。。。");
        int r1 = scan.nextInt();
        System.out.println("请输入矩阵的列数。。。");
        int c1 = scan.nextInt();
        Matrix m1 = new Matrix(r1,c1);
        System.out.println("请以此输入矩阵元素。。。");
        for(int i = 0; i<r1;i++){
            for(int j = 0; j<c1;j++){
                m1.datas[i][j] = scan.nextDouble();
            }
        }
        m1.display();
        System.out.println("相乘的结果是: ");
        m.multip(m1).display();
    }
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值