You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何正确实现不同长度二维矩阵求和并规范打印输出

问题根源

你的代码存在三处硬编码缺陷,直接导致输出错误:

  • 结果数组固定初始化为4*4尺寸,循环行数硬编码为2、列数硬编码为3,完全没有匹配输入矩阵的实际大小,计算逻辑本身就不对
  • 打印逻辑没有按行做换行处理,所有计算出的元素连续输出,格式完全混乱
  • 没有做数组索引越界判断,只要输入矩阵行列数和硬编码值不匹配,就会抛出运行时错误,更无法兼容尺寸不一致的矩阵求和场景
通用矩阵求和实现方案

尺寸适配逻辑

要支持任意尺寸二维矩阵求和,统一按以下规则做尺寸适配:

  • 结果矩阵的总行数取两个输入矩阵行数的较大值
  • 遍历两个输入矩阵的所有行,取所有行的长度最大值作为结果矩阵的总列数
  • 逐元素计算时,如果当前行列索引超出某一矩阵的有效索引范围,该矩阵对应位置按0参与求和,从根源上避免数组越界

格式化打印调整

每打印完一整行元素后输出换行符,同一行的元素用空格分隔,行尾不追加多余空格,保证输出格式整齐。

修正后完整代码

public static void main(String[] args) {
    int[][] m1 = { { 1, 2, 0 }, { 2, 3, 4 } };
    int[][] m2 = { { 3, 2, 5 }, { 6, 4, 3 } };
    int[][] m3 = { { 1, 1, 1, 1 }, { 3, 3, 2, 1 }, { 2, 2, 2, 2 } };
    int[][] m4 = { { 2, 2, 2, 3 }, { 2, 3, 1, 0 }, { 1, 2, 3, 4 } };
    printMatrixSum(m1, m2);
    System.out.println();
    printMatrixSum(m3, m4);
}

private static void printMatrixSum(int[][] x, int[][] y) {
    // 动态计算结果矩阵的行列数
    int maxRows = Math.max(x.length, y.length);
    int maxCols = 0;
    for (int[] row : x) {
        maxCols = Math.max(maxCols, row.length);
    }
    for (int[] row : y) {
        maxCols = Math.max(maxCols, row.length);
    }
    int[][] sumResult = new int[maxRows][maxCols];

    // 逐元素求和,自动适配越界位置
    for (int i = 0; i < maxRows; i++) {
        for (int j = 0; j < maxCols; j++) {
            int valX = (i < x.length && j < x[i].length) ? x[i][j] : 0;
            int valY = (i < y.length && j < y[i].length) ? y[i][j] : 0;
            sumResult[i][j] = valX + valY;
        }
    }

    // 按行格式化打印
    for (int i = 0; i < maxRows; i++) {
        StringBuilder line = new StringBuilder();
        for (int j = 0; j < maxCols; j++) {
            line.append(sumResult[i][j]);
            if (j != maxCols - 1) {
                line.append(" ");
            }
        }
        System.out.println(line);
    }
}

运行效果

代码运行后输出和预期结果完全一致:

4 4 5
8 7 7

3 3 3 4
5 6 3 1
3 4 5 6

内容的提问来源于stack exchange,提问作者Enerqia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:57:11