0

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

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

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

4

1 回答 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);
于 2015-12-13T15:04:37.443 回答