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

递归计算矩阵行列式的Java程序出现数组越界异常求助

递归计算矩阵行列式的Java程序越界错误修复

错误原因分析

1. 循环边界错误

原代码中for (int i = 0; i <= len; i++)和for (int j = 0; j <= len; j++)的边界设置错误,矩阵索引范围是0到len-1,使用<= len会导致访问超出矩阵长度的索引,直接触发ArrayIndexOutOfBoundsException。

2. 余子式矩阵构建逻辑完全错误

Python版本中,余子式矩阵s是去掉原矩阵第一行,再去掉每行的第i列,但Java代码直接用原矩阵的i、j索引给s[i][j]赋值,完全不符合余子式的生成规则,而且s的尺寸是len-1,当i或j大于等于len-1时必然越界。

3. 递归调用时机错误

原Java代码在j的内层循环中就调用递归,正确逻辑应该是针对第一行的每个元素,先构建好对应的余子式矩阵,再计算累加项。

修正后的Java代码

import java.util.*;

public class linear_equation {
    public static float determinant(float[][] a) {
        int len = a.length;
        // 基准条件:1阶矩阵直接返回唯一元素
        if (len == 1) {
            return a[0][0];
        }

        float ans = 0;
        // 遍历第一行的每个元素,计算对应余子式的行列式
        for (int i = 0; i < len; i++) {
            // 创建余子式矩阵:尺寸为(len-1)x(len-1)
            float[][] s = new float[len - 1][len - 1];
            // 填充余子式:跳过原矩阵的第一行和第i列
            for (int row = 1; row < len; row++) {
                int colIndex = 0;
                for (int col = 0; col < len; col++) {
                    if (col != i) {
                        s[row - 1][colIndex++] = a[row][col];
                    }
                }
            }
            // 累加:元素值 * 余子式行列式 * 符号因子
            ans += a[0][i] * determinant(s) * (float) Math.pow(-1, i);
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入矩阵的阶数");
        int len = sc.nextInt();
        float[][] a = new float[len][len];
        System.out.println("请输入矩阵元素:");
        for (int i = 0; i < len; i++) {
            for (int j = 0; j < len; j++) {
                a[i][j] = sc.nextFloat();
            }
        }

        System.out.print("行列式的值为:" + determinant(a));
        sc.close();
    }
}

关键修正点说明

  • 调整循环边界为< len,避免索引越界;
  • 按照余子式定义构建子矩阵:跳过原矩阵第一行和当前元素所在列;
  • 将递归调用移到外层循环(对应第一行每个元素),构建完正确子矩阵后再计算累加项;
  • 增加sc.close()关闭输入流,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:09:58