代码之家  ›  专栏  ›  技术社区  ›  Lili V.

Java中的方矩阵和次对角线

  •  0
  • Lili V.  · 技术社区  · 7 年前

    我有这个任务:

    给定一个正方形矩阵M[3x3],创建一个Java代码来计算它的二次对角线的值。参见下面的示例。

    给定矩阵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代码必须是通用的,以计算任意方阵[2x2]、[3x3]、[4x4]等的二次对角线(在代码中使用常数来设置矩阵的数行和数列的值)。

    注2:矩阵M可能是硬编码的(不需要用户交互)

    到目前为止我有:

    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);
    
    
        }
    }
    

    它工作,但我无法找到一种方法来实现所有的笔记在最后…请帮忙?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Thiyagu    7 年前

    您已经达到要求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
    

    上面不会报告任何消息,而是会落到 其他的 阻止并将导致 Secondary diagonal is 0 .

    它还假设所有行都有相同数量的列,我想这些列对您来说可能是合适的,并且不需要如此广泛的测试(从您的注释中)