首页 文章

Java中用户指定矩阵中各行和列的总和

提问于
浏览 830
0

此分配涉及要导入程序的“matrix.txt”文件 . 该文件可以具有任何大小的矩阵 . 教授提供了一个工作程序来正确导入这个文件,并设置了学生的任务来确定这个文件是否是魔术广场 . 我知道这意味着获取每行和每列的总和,然后比较这些值以查看它们是否相等 . 我的问题是我不知道如何指定不必立即打印出来的单行值,从而在循环重复时丢失值 . 我想要一种存储每个值的方法,以便在循环遍历所有可能的行和列之后检查它们是否相等 . 因为我不知道数组的大小是多少,我不能'硬编码'值,并且必须使用如下的东西:

sum = 0;
for (i = 0; i < matrix.length; i++)
{
for (j = 0; j < matrix[i].length; j++)

我正在寻找一种方法来个性化每行和每列的值,以便我以后可以比较它们 . 然后我会打印出“矩阵是一个魔方”,或“矩阵不是魔方”

1 回答

  • 0

    有些代码会这样吗?

    boolean isMagicSquard = true;
    int sum = -1;
    for (int i = 0; i < matrix.length; i++){
        // Calculate the sum for each row
        int rowsum = 0;
        for (int j = 0; j < matrix[i].length; j++){
            rowsum += matrix[j][i];
        }
        if (sum == -1){ 
            sum = rowsum; 
        }else if (sum != rowsum){ // If the sum differs from the 
                                  // first-row sum, it is no magic squaree
            isMagicSquard = false; break; 
        }
    }
    // The same code with rows and column swaped
    for (int i = 0; i < matrix[0].length; i++){
        int columnsum = 0;
        for (int j = 0; j < matrix.length; j++){
            columnsum += matrix[i][j];
        }
        if (sum != columnsum ){ 
            isMagicSquard = false; break; 
        }
    }
    System.out.println(isMagicSquare);
    

相关问题