Java编写一个程序实现矩阵的运算加减乘除,(并对其中的异常进行处理)

 我来答
1054731321
推荐于2017-10-13 · TA获得超过205个赞
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:51.2万
展开全部

/**
 * 矩阵:由 m × n 个数Aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵
 * 说白了就是一个二维数组,下面的程序用整形作为数据类型,其他类型运算大同小异
 * 
 */

public class MatrixUtils {

    /**
     * 矩阵运算:加(减法与之类似)
     */
    public static int[][] matrixAdd(int[][] addend, int[][] summand) {
        if (addend == null || addend.length == 0) {
            throw new IllegalArgumentException("addend matrix is empty!");
        }
        if (summand == null || summand.length == 0) {
            throw new IllegalArgumentException("summand matrix is empty!");
        }
        //矩阵加减要求两个矩阵类型一致,即行列数相同
        int row = addend.length;
        int col = addend[0].length;
        if (row != summand.length || col != summand[0].length) {
            throw new IllegalArgumentException("summand and summand not the same type!");
        }
        int[][] sum = new int[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                sum[i][j] = addend[i][j] + summand[i][j];
                // sum[i][j] = addend[i][j] - summand[i][j]; //减法
            }
        }
        return sum;
    }

    /**
     * 矩阵运算:乘法,没找到除法的运算规则
     */
    public static int[][] matrixMultiply(int[][] addend, int[][] summand) {
        if (addend == null || addend.length == 0) {
            throw new IllegalArgumentException("addend matrix is empty!");
        }
        if (summand == null || summand.length == 0) {
            throw new IllegalArgumentException("summand matrix is empty!");
        }
        //两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵 
        int row = addend.length;
        int col = summand[0].length;
        if (addend[0].length != summand.length) {
            throw new IllegalArgumentException("summand and summand not the same type!");
        } 
        int[][] sum = new int[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                for (int z = 0; z < addend[0].length; z++) {
                    sum[i][j] += addend[i][z] * summand[z][j];
                    System.out.println("sum[" + i+  "]["+ j+"]= " + sum[i][j]);
                }
            }
        }
        return sum;
    }
}
更多追问追答
追问
感谢 请问你还能帮我编写两个代码图题么?我增加财富奖励值,都给你。因为是文科生,选修的Java,实在是不会。并非贪玩好耍之辈,谢啦

TableDI
2024-07-18 广告
Excel一键自动匹配,在线免费vlookup工具,3步完成!Excel在线免费vlookup工具,点击58步自动完成vlookup匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式