2016-06-05 15 views
5
int[][] arr = { { 11, 12, 13, 14, 15, 16 }, 
      { 21, 22, 23, 24, 25, 26 }, 
      { 31, 32, 33, 34, 35, 36 }, 
      { 41, 42, 43, 44, 45, 46 }, 
      { 51, 52, 53, 54, 55, 56 }, 
      { 61, 62, 63, 64, 65, 66 } }; 
    int sum = 0; 
    int rowsSum = 0; 
    int rowIndex = 0; 
    for (int i = 0; i < arr.length * arr.length; i++) { 
     System.out.print(arr[i/arr.length][i % arr.length] + " "); 
     sum += arr[i/arr.length][i % arr.length]; 
     if (i % 6 == 0) { 
      System.out.println(); 
      System.out.println("Sum of row " + (rowIndex + 1) + " is: " + sum); 
      rowsSum += sum; 
      sum = 0; 
      rowIndex++; 
     } 

    } 
    System.out.println(); 
    System.out.println("Sum of all rows is: " + rowsSum);  

Questo è ciò che ho scritto finora. Il problema che ho riscontrato è che io è 0 alla prima iterazione, rendendo i% 6 = 0 e facendo in modo che la riga 1 sia composta da arr [0] [0] solo e ogni riga successiva termini con il primo effettivo della successiva uno.Ricerca della somma di righe di array 2D, utilizzando 1 loop in java

Ho la sensazione che la soluzione debba essere semplice ma non ne ho trovata una nell'ultima ora o così. Qualsiasi aiuto sarebbe apprezzato.

+0

Il compito è di non usare un ciclo interno. Devo trovare la somma di ogni riga usando un ciclo. – Atanasov

risposta

4

Invece di confrontare i%6 a zero, confrontarlo con 5, l'ultimo numero prima che il resto scenda nuovamente a zero. Questo ti permetterebbe di fare l'output quando raggiungi l'ultimo elemento della riga corrente, invece di aspettare di raggiungere l'elemento iniziale della riga successiva (e di eliminare completamente la stampa per l'ultima riga).

if (i % 6 == 5) { 
    System.out.println(); 
    System.out.println("Sum of row " + (rowIndex + 1) + " is: " + sum); 
    rowsSum += sum; 
    sum = 0; 
    rowIndex++; 
} 
0

o si può fare (i+1) % 6 == 0 invece di i % 6 == 0

if ((i+1) % 6 == 0) { 
    System.out.println("Sum of row " + (rowIndex + 1) + " is: " + sum); 
    rowsSum += sum; 
    sum = 0; 
    rowIndex++; 
}