Сумма отдельных строк и столбцов в указанной пользователем матрице в Java

Это назначение включает файл matrix.txt, который необходимо импортировать в программу. Этот файл может иметь матрицу любого размера. Профессор подготовил рабочую программу для правильного импорта этого файла и поставил перед учениками задачу определить, является ли этот файл Волшебным квадратом. Я знаю, что это означает получение суммы каждой строки и каждого столбца, а затем сравнение значений, чтобы увидеть, равны ли они. Моя проблема в том, что я не знаю, как указать значение одной строки, которое не должно быть немедленно распечатано, таким образом, теряя значение при повторении цикла. Мне нужен способ, который будет хранить каждое значение, чтобы их можно было проверить на равенство после того, как цикл повторяется по всем возможным строкам и столбцам. так как я понятия не имею, каким будет размер массива, я не могу "жестко кодировать" значения, и мне придется использовать такие вещи, как:

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

Я ищу способ индивидуализировать значения каждой строки и столбца, чтобы я мог сравнить их позже. Затем я бы распечатал "Матрица - это волшебный квадрат" или "Матрица - это не волшебный квадрат"

1 ответ

Решение

Будет ли какой-то код, как эта работа?

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);
Другие вопросы по тегам