Testando um arquivo .txt para um Magic Square Java

Eu não queria ter que perguntar, mas não consigo descobrir essa tarefa, e o AT não podia pedir ajuda.

Eu tenho que pegar a entrada de um arquivo de texto, alimentar os números inteiros no arquivo em uma lista de matriz e testar para ver se é um quadrado mágico n x n. n é igual à raiz quadrada do comprimento da lista de matrizes. Se não é um quadrado perfeito, falha imediatamente no teste do quadrado mágico.

Enfim, eu tenho quase concluído; Parece que não entendo o que meu professor está dizendo / nos pedindo para fazer na etapa final do teste do quadrado mágico.

Todos os testes antes dessas quatro etapas finais funcionam perfeitamente. Vou postar meu código atual após as etapas.

Seja rowSums e colSums duas matrizes de comprimento n com entradas todos zeros. Além disso, deixe sumDiagMajor e sumDiagMinor, representando a soma das entradas ao longo das diagonais superior esquerda para inferior direita e superior direita para esquerda inferior, respectivamente, da tabela.

Let index = 0

Repita até index = n2 (a) Incrementar rowSums [linha] por ArrayList {index} (b) incrementar colSums [col] por ArrayList {index} (c) Se row = col, aumente sumDiagMajor por ArrayList {index}. (d) Se linha + col = n-1, aumente sumDiagMinor por ArrayList {index} (e) Incremente o índice em 1

Se sumDiagMajor for igual a sumDiagMinor e cada entrada de rowSums e colSums, a tabela será um quadrado mágico; caso contrário, não é.

   int rowSums[] = new int[_n];
   int colSums[] = new int[_n];
   int sumDiagMajor = 0;
   int sumDiagMinor = 0;

   int row, col;
   row = col = 0;

   for (int index = 0; index < (n*n); index++)
   {          
       rowSums[row] = rowSums[row] + magicSquare.get(index);
       colSums[col] = colSums[col] + magicSquare.get(index);

       if (row == col)
       {       
           sumDiagMajor = sumDiagMajor + magicSquare.get(index);   
       }

       if ((row + col) == (n - 1))
       {
           sumDiagMinor = sumDiagMinor + magicSquare.get(index);   
       }

   }

   System.out.println(sumDiagMajor);
   System.out.println(sumDiagMinor);

Minhas perguntas incluem: estou incrementando corretamente as matrizes rowSums e rowCols? Na verdade, ele nunca declara o que fazer com linhas ou colunas, então inicializá-las para zerar a melhor opção?

Se eu fiz tudo correto até agora, como sumDiagMajor pode ser igual a sumDiagMinor, porque as linhas sempre serão iguais a cols; portanto, a segunda instrução if aninhada nunca será executada. Portanto, descartará tudo teste como sendo um quadrado mágico?

Desculpe pelo longo post, mas isso é muito confuso.

questionAnswers(2)

yourAnswerToTheQuestion