trouver la somme de deux dimensions de la matrice de java

Je suis en train de travailler sur un projet où je dois lire un fichier et saisissez le contenu dans un tableau 2D. Puis j'ai de la somme de chaque ligne, chaque colonne, et le périmètre de la matrice. J'ai tout qui fonctionne jusqu'à présent, sauf le périmètre. Je suis en train de créer des boucles for pour la rangée du haut, du bas de ligne, et le moyen de les deux à l'extérieur colonnes.

La matrice fichier ressemble à ceci:

1 2 3 4 
2 4 6 8 
2 4 6 8 
3 2 3 4 

Donc le périmètre devrait ajouter jusqu'à 42.
Droit maintenant, je peux ajouter avec succès la première ligne et la dernière ligne de l'égalité des 22. Cependant, lorsque j'ajoute les colonnes pour que le total-je obtenir 32.

Voici le code:

import java.util.*; //Scanner class
import java.io.*;  //File class
public class Lab10
{
static public void main( String [ ] args )  throws Exception
{    
if ( args.length != 1 )
{
System.out.println("Error -- usage is:  java Lab10 matdataN.txt");
System.exit( 0 );
}
//Requirement #1: first int value: # of rows, second int value: # of cols
File newFile = new File(args[0]); 
Scanner in = new Scanner(newFile);
int numRows = in.nextInt();
int numCols = in.nextInt();
//Requirement #2: declare two-d array of ints
int[][] matrix;
matrix = new int[numRows][numCols];
//Requirement #3 & 4: read file one line at a time (nested for loops 
//and nextInt()) and print
for (int i = 0; i < numRows; i++)
{
for (int j = 0; j < numCols; j++)
{
matrix[i][j] = in.nextInt();
System.out.print(matrix[i][j]+ " ");
}
System.out.println();
}
//Requirement #5: traverse each row and sum the values and display the sums
int rowTotal = 0;
for (int i = 0; i < numRows; i++)
{
rowTotal = 0;
for (int j = 0; j < numCols; j++)
{
rowTotal += matrix[i][j];
}
System.out.println("Sum for row = " + rowTotal);
}
//Requirement #6: traverse each column and sum the values and display the sums
int colTotal = 0;
for (int i = 0; i < numRows; i++)
{
colTotal = 0;
for (int j = 0; j < numCols; j++)
{
colTotal += matrix[j][i];
}
System.out.println("Sum for col = " + colTotal);
}
//Requirement #7: traverse the perimeter and sum the values and display the sum
//sum bottom row matrix
int perTotal = 0;
for (int i = (numRows-1); i < numRows; i++)
{
perTotal = 0;
for (int j = 0; j < numCols; j++)
{
perTotal += matrix[i][j];
}
}
//sum + top row matrix
for (int i = 0; i < numRows - (numRows-1); i++)
{
for (int j = 0; j < numCols; j++)
{
perTotal += matrix[i][j];
}
System.out.println("Sum of perimeter = " + perTotal);
}
//sum + first col middle
for (int i = 1; i < (numRows-1); i++)
{
for (int j = 0; j < numCols - (numCols-1); j++)
{
perTotal += matrix[j][i];
}
System.out.println("Sum = " + perTotal);
}
//sum + last col middle
for (int i = 1; i < (numRows-1); i++)
{
for (int j = (numCols-1); j < numCols; j++)
{
perTotal += matrix[j][i];
}
System.out.println(perTotal);
}
}

Je serais hugeeeeeely reconnaissante si quelqu'un pouvait m'aider à me total le milieu de la première et de la dernière colonne (devrait être de 2+2 8+8). Ou si vous avez une meilleure façon de trouver le périmètre. Merci à l'avance!

  • Vous avez fait tout trop compliqué. Vous n'avez pas besoin de deux boucles for pour compter juste une ligne/colonne. En fait chaque fois que l'un de vos boucles for ne fait qu'une seule itération. Donc, si vous savez que pour la boucle va faire juste une itération, correctif de valeur et de ne pas utiliser de boucle for
InformationsquelleAutor maggie | 2013-03-26