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

已声明方法仍报‘cannot find symbol’错误:Matrix类代码排查

问题原因分析与修正方案

嘿,这个问题其实挺典型的,咱们一步步来理清楚:

错误根源

你在add方法里写的matrice.rows()和matrice.columns()犯了一个对象类型混淆的错误:

  • matrice是你在Matrix类中定义的int[][]类型的二维数组,它属于Java的基础数组对象,本身并没有rows()或columns()方法。
  • 而rows()和columns()是你为Matrix类定义的成员方法,只能被Matrix类的实例对象调用,不能直接用在数组上。

两种修正方式

方式一:直接使用数组的length属性

既然matrice是二维数组,我们可以直接通过数组的length属性获取行和列数:

int[][] sum = new int[matrice.length][matrice[0].length];

方式二:调用当前Matrix实例的方法

因为add是Matrix类的成员方法,你可以直接调用当前对象的rows()和columns()方法(可以用this显式指代当前实例,也可以省略):

int[][] sum = new int[this.rows()][this.columns()];
// 或者省略this,写法更简洁:
// int[][] sum = new int[rows()][columns()];

额外建议:完善矩阵加法逻辑

另外,你当前的代码只是创建了一个空的结果数组,还没有实现真正的矩阵加法逻辑,而且最好先判断两个矩阵的行列数是否匹配(否则会抛出数组越界异常),完整的add方法可以这样写:

public Matrix add(Matrix secondMatrix){
    // 先校验矩阵维度是否匹配
    if (this.rows() != secondMatrix.rows() || this.columns() != secondMatrix.columns()) {
        throw new IllegalArgumentException("两个矩阵的行或列数不匹配,无法执行加法操作");
    }
    int[][] sum = new int[rows()][columns()];
    // 遍历数组,计算对应元素的和
    for (int i = 0; i < rows(); i++) {
        for (int j = 0; j < columns(); j++) {
            sum[i][j] = this.matrice[i][j] + secondMatrix.matrice[i][j];
        }
    }
    Matrix result = new Matrix(sum);
    return result;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:49