Как суммировать столбец, если строки и столбцы не равны? - PullRequest
0 голосов
/ 08 марта 2020

, поэтому я использовал несколько других суммирующих столбцов в 2-мерных массивах, но все они имеют одинаковую длину, а моя - нет. Я суммировал строки (довольно прямо), однако, когда я пытаюсь суммировать столбец, он останавливается, потому что в первом ряду нет числа. Как мне сделать так, чтобы это продолжалось? Я включил, что на выходе.

 import java.util.*;
 import java.io.*;



 public class Main
   {
      public static void main(String args[])
   { 
      int[][] data = { {3, 2, 5},
                     {1, 4, 4, 8, 13},
                     {9, 1, 0, 2},
                     {0, 2, 6, 3, -1, -8} };

       // declare the sum
       int sum;
       int sum2 = 0;

       // compute the sums for each row
       for ( int row=0; row < data.length; row++)
       {
       // initialize the sum, i did it to zero
       sum = 0;


       // compute the sum for this row
       for ( int col=0; col < data[row].length; col++) 
       {
           sum+=data[row][col];
       }

       // write the sum for this row
       System.out.println("The sum of this row is: " + sum);
   }

       for(int i = 0; i < data[0].length; i++)
        {  
          sum2= 0;  
          for(int j = 0; j < data.length; j++)
          {  
            sum2 = sum2 + data[j][i];  
          }   
          System.out.println("Sum of " + (i+1) +" column: " + sum2);  
        }
   }
}





/*Sample Output:
The sum of this row is: 10
The sum of this row is: 30
The sum of this row is: 12
The sum of this row is: 2
Sum of 1 column: 13
Sum of 2 column: 9
Sum of 3 column: 15
*/

Спасибо всем!

1 Ответ

1 голос
/ 09 марта 2020

Попробуйте это. Хитрость заключается в заполнении пустых столбцов нулями в качестве заполнителей:

int[][] data = { {3, 2, 5},
                 {1, 4, 4, 8, 13},
                 {9, 1, 0, 2},
                 {0, 2, 6, 3, -1, -8} };

int length = 0;
for (int r = 0; r < data.length; r++) {
    int currLength = data[r].length;
    if(currLength>length) length = currLength;
}
// create array for column sums
int[] sums = new int[length];
// fill array with zeros
Arrays.fill(sums, 0);
// sum up
for (int currentRow = 0; currentRow < data.length; currentRow++) {
   for (int col = 0; col < data[currentRow].length; col++) {
       sums[col] += data[currentRow][col];
   } 
}   
// print sums
for (int i = 0; i < sums.length; i++) {
    System.out.println("Sum of column " + (i+1) + ": " + sums[i]);
}
...