首页 > 解决方案 > java中的方阵和二次对角线

问题描述

我有这个任务:

给定一个方阵 m[3x3],创建一个 java 代码来计算其 SECONDARY Diagonal 的值。请参见下面的示例。

给定矩阵 m[3x3] 的示例如下所示:

(0,0) (0,1) (0,2)   |   10   12  11
(1,0) (1,1) (1,2)   |   9   8   31
(2,0) (2,1) (2,2)   |   2   16  24
Secondary Diagonal (generic m[3x3]) = m[0,2] + m[1,1] + m[2,0]
Secondary Diagonal (as in the example above) = 11 + 8 + 2 = 21

注意 1:您的 java 代码必须是 GENERIC 才能计算任何方阵 [2x2]、[3x3]、[4x4] 等的次对角线。(在代码中使用常量来设置矩阵的 numberOfRows 和 numberOfColumns 的值.

注 2:您的矩阵 m 可能是硬编码的(无需用户交互)

注意 3:如果 numberOfRows 和 numberOfColumns 不同,您的程序必须显示以下消息:“This is not a square matrix.”</p>

到目前为止,我有:

public class matrix {

public static void main(String[] args) {
    int [] [] matrix = {
            { 10, 12, 11},
            {9, 8, 31},
            {2, 16, 24}
    };
    int secondaryDiagonal = 0;
    int size = matrix.length -1;
    for (int i = 0; i < matrix.length; i++) {
        secondaryDiagonal += matrix[i][size-i];
    }
    System.out.println("Secondary diagonal is " + secondaryDiagonal);


    }
}

它有效,但我无法找到一种方法来实现最后的所有注释......请帮助?

标签: java

解决方案


您已经达到要求 1 和 2。

对于 3,查找行数和列数并显示一条消息,不执行任何操作。

int numberOfRows = matrix.length;
int numberOfColumns = matrix[0].length; //Note must have atleast one row

if (numberOfRows != numberOfColumns) {
    System.out.println("This is not a square matrix");
} else {
  //proceed to find secondaryDiagonal
}

如果传递了一个空矩阵(如int [][] matrix = {};),您需要决定要做什么。在这种情况下,numberOfRows将为 0。因此,需要增强第二个条件来处理此问题。

numberOfColumns = numberOfRows > 0 ? matrix[0].length : 0

上面不会报告任何消息,而是会落到else块并导致Secondary diagonal is 0.

它还假设所有行都有相同数量的列,我猜这对你来说可能没问题,不需要如此广泛的测试(来自你的笔记)


推荐阅读