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

Java实现任意方阵次对角线求和及非方阵判断求助

完善后的Java代码实现

没问题,我来帮你调整代码,满足所有指定的要求:

public class MatrixCalculator {
    // 用常量定义矩阵的大小(行数=列数),修改这个值即可适配不同大小的方阵
    private static final int MATRIX_SIZE = 3;

    public static void main(String[] args) {
        // 硬编码的方阵,注意每行的元素个数要和MATRIX_SIZE一致
        int[][] matrix = {
                {10, 12, 11},
                {9, 8, 31},
                {2, 16, 24}
        };

        // 第一步:检查是否是方阵
        boolean isSquareMatrix = true;
        for (int i = 0; i < matrix.length; i++) {
            if (matrix[i].length != MATRIX_SIZE) {
                isSquareMatrix = false;
                break;
            }
        }

        if (!isSquareMatrix) {
            System.out.println("这不是一个方阵。");
            return; // 终止程序,不再执行后续计算
        }

        // 第二步:计算次对角线的和
        int secondaryDiagonalSum = 0;
        for (int i = 0; i < MATRIX_SIZE; i++) {
            // 次对角线的元素坐标是 [i, MATRIX_SIZE - 1 - i]
            secondaryDiagonalSum += matrix[i][MATRIX_SIZE - 1 - i];
        }

        System.out.println("Secondary diagonal is " + secondaryDiagonalSum);
    }
}

针对每个注意事项的实现说明:

  • 1. 通用任意大小的方阵:
    我们用private static final int MATRIX_SIZE这个常量来定义矩阵的行列数,只要修改这个常量的值(比如改成2、4),同时调整硬编码的矩阵元素个数对应上,程序就能自动适配新的方阵大小。计算次对角线的逻辑matrix[i][MATRIX_SIZE - 1 - i]是通用的,对任意n阶方阵都成立(n=MATRIX_SIZE)。

  • 2. 矩阵硬编码:
    代码里的int[][] matrix就是直接硬编码的矩阵,你可以根据需要修改里面的数值,只要保证每行的元素个数和MATRIX_SIZE一致即可。

  • 3. 非方阵的错误提示:
    在计算前我们添加了检查逻辑:遍历矩阵的每一行,判断每行的列数是否等于MATRIX_SIZE(也就是行数)。如果存在行的列数不匹配,就标记为非方阵,输出提示信息并终止程序,避免后续错误计算。

比如你想测试2x2的矩阵,只需要改MATRIX_SIZE = 2,然后把矩阵改成:

int[][] matrix = {
        {5, 3},
        {2, 7}
};

运行后会计算次对角线3+2=5,完全正常。如果故意写一个非方阵,比如:

int[][] matrix = {
        {10, 12, 11},
        {9, 8},
        {2, 16, 24}
};

程序就会输出这不是一个方阵。

内容的提问来源于stack exchange,提问作者Lili V.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:36:47