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

Java报错:Determinant类中getValue等方法未定义的解决方法

解决方案

问题根源

Determinant类既没有继承包含getValue、getColumnNumber等方法的BasicOperations/Matrix类,也没有持有Matrix或BasicOperations的实例,所以调用this.getValue()时,编译器找不到对应方法。

方案一:继承BasicOperations类

让Determinant继承BasicOperations,直接复用其所有属性和方法:

package Matrix;

public class Determinant extends BasicOperations{
    
    // 必须实现构造方法,调用父类构造器初始化矩阵参数
    public Determinant(int n, int m){
        super(n, m);
    }
    
    public double get2x2Determinant() {
        
        if(this.getColumnNumber() * this.getRowNumber() == 4) {
            
            double det = (this.getValue(1, 1) * this.getValue(2, 2)) - (this.getValue(1, 2) * this.getValue(2, 1));
            return det;
            
        } else {
            
            return 0;
            
        }
        
    }
}
  • 优势:代码改动最小,Determinant直接具备矩阵的所有基础操作能力。
  • 适用场景:需要把行列式计算作为矩阵的一种扩展功能时使用。

方案二:采用组合模式(推荐)

让Determinant类持有一个BasicOperations实例,专注于行列式计算职责:

package Matrix;

public class Determinant{
    
    private final BasicOperations matrix;
    
    // 通过构造方法传入已初始化的矩阵实例
    public Determinant(BasicOperations matrix){
        this.matrix = matrix;
    }
    
    public double get2x2Determinant() {
        
        if(matrix.getColumnNumber() * matrix.getRowNumber() == 4) {
            
            double det = (matrix.getValue(1, 1) * matrix.getValue(2, 2)) - (matrix.getValue(1, 2) * matrix.getValue(2, 1));
            return det;
            
        } else {
            
            return 0;
            
        }
        
    }
}
  • 使用示例:
// 先创建并初始化矩阵
BasicOperations mat = new BasicOperations(2,2);
mat.putTo(1,1,2.0);
mat.putTo(1,2,3.0);
mat.putTo(2,1,4.0);
mat.putTo(2,2,5.0);

// 传入矩阵计算行列式
Determinant detCalc = new Determinant(mat);
System.out.println(detCalc.get2x2Determinant()); // 输出:-2.0
  • 优势:符合单一职责原则,Determinant只负责计算行列式,矩阵操作由BasicOperations处理,代码耦合度更低,扩展性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:40:57