Java 中用户指定矩阵中各个行和列的总和
Sum of individual rows and columns in user-specified matrix in Java
此作业涉及一个要导入到程序中的 'matrix.txt' 文件。这个文件可以有一个任意大小的矩阵。教授提供了一个正确导入该文件的工作程序,并为学生设置了任务,以确定该文件是否为幻方。我知道这意味着获取每一行和每一列的总和,然后比较这些值以查看它们是否相等。我的问题是我不知道如何指定不必立即打印出来的单个行的值,从而在循环重复时丢失该值。我想要一种方法来存储每个值,以便在循环遍历所有可能的行和列后检查它们是否相等。因为我不知道数组的大小是多少,所以我不能 'hard code' 值,并且必须使用类似的东西:
sum = 0;
for (i = 0; i < matrix.length; i++)
{
for (j = 0; j < matrix[i].length; j++)
我正在寻找一种方法来个性化每行和每列的值,以便稍后比较它们。然后我会打印出"The matrix is a magic square",或者"The matrix is not a magic square"
这样的代码行得通吗?
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);
此作业涉及一个要导入到程序中的 'matrix.txt' 文件。这个文件可以有一个任意大小的矩阵。教授提供了一个正确导入该文件的工作程序,并为学生设置了任务,以确定该文件是否为幻方。我知道这意味着获取每一行和每一列的总和,然后比较这些值以查看它们是否相等。我的问题是我不知道如何指定不必立即打印出来的单个行的值,从而在循环重复时丢失该值。我想要一种方法来存储每个值,以便在循环遍历所有可能的行和列后检查它们是否相等。因为我不知道数组的大小是多少,所以我不能 'hard code' 值,并且必须使用类似的东西:
sum = 0;
for (i = 0; i < matrix.length; i++)
{
for (j = 0; j < matrix[i].length; j++)
我正在寻找一种方法来个性化每行和每列的值,以便稍后比较它们。然后我会打印出"The matrix is a magic square",或者"The matrix is not a magic square"
这样的代码行得通吗?
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);