Je travaille sur un projet où je dois lire un fichier et entrer le contenu dans un tableau 2D. Ensuite, je dois additionner chaque rangée, chaque colonne et le périmètre de la matrice. J'ai tout fonctionné jusqu'ici excepté le périmètre. J'essaie de créer des boucles séparées pour la rangée du haut, la rangée du bas et le milieu des deux colonnes extérieures.trouver la somme de deux dimensions java tableau
Le fichier de matrice ressemble à ceci:
1 2 3 4
2 4 6 8
2 4 6 8
3 2 3 4
Par conséquent, le périmètre devrait ajouter jusqu'à 42. Je peux En ce moment ajouter avec succès la première ligne et la dernière rangée à l'égalité 22. Cependant, quand j'ajoute les colonnes à ce total je reçois 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 reconnaissant si quelqu'un pouvait me aider à tal au milieu de la première et dernière colonne (devrait être 2 + 2 et 8 + 8). Ou si vous avez une meilleure façon de trouver le périmètre. Merci d'avance!
Vous avez fait tout trop compliqué. Vous n'avez pas besoin de deux boucles pour compter une seule ligne/colonne. En fait chaque fois qu'une de vos boucles for ne fait qu'une seule itération.Donc, si vous savez que la boucle va faire une seule itération, corrigez cette valeur et ne l'utilisez pas pour la boucle – Martinsos