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

如何在Driver类中调用mult矩阵乘法方法(禁构造方法)并输出结果?

矩阵乘法调用与代码问题解析

一、调用mult方法的两种可行方式(符合APCSA不允许自定义构造方法的要求)

方式1:利用默认无参构造创建对象调用实例方法

Java会为没有自定义构造方法的类自动提供默认无参构造,这不属于自定义构造方法,符合你的要求。在Tester的main方法中可以这样写:

// 创建Tester2实例(使用Java自动提供的默认构造,未自定义构造方法)
Tester2 matrixCalculator = new Tester2();
// 调用mult方法计算矩阵乘积
int[][] resultMatrix = matrixCalculator.mult(a, b);
// 打印结果(用Arrays.deepToString输出二维数组)
System.out.println(Arrays.deepToString(resultMatrix));

方式2:将mult改为静态方法,直接通过类名调用

如果完全不想创建对象,可以把Tester2中的mult方法修改为静态方法,这样无需实例化就能调用:
修改Tester2的代码:

package tester;
public class Tester2 {  
  // 改为static静态方法
  public static int[][] mult(int[][] a, int[][] b) {
    int[][] c = new int[a.length][b[0].length];
    for (int row = 0; row < c.length; row++) {
      for (int col = 0; col < c[row].length; col++) {
        int cell = 0; // 移到内层循环,每次计算新单元格时重置为0
        for (int i = 0; i < b.length; i++) {
          cell += a[row][i] * b[i][col];
        }
        c[row][col] = cell;
      }
    }
    return c;
  }
}

然后在Tester的main中直接调用:

int[][] resultMatrix = Tester2.mult(a, b);
System.out.println(Arrays.deepToString(resultMatrix));

二、原代码的运行问题:无法得到正确结果

你的mult方法存在一个逻辑错误:cell变量定义在最外层循环外面,导致每次计算新的矩阵单元格时,cell会累加之前所有单元格的计算值,最终结果完全错误。

修复方法:把int cell = 0;移到列循环的内层,每次计算一个新的单元格时重置cell为0,确保每个单元格的计算都是独立的,就像上面修改后的代码那样。

修复后,给定的矩阵a和b相乘后,正确结果应为:

[[-3, 23], [14, 6], [-2, 22]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:40:54