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.
相关产品推荐
相关产品推荐

