添加Jagged数组中的每个列都不起作用

时间:2018-01-08 22:31:09

标签: java arrays

我最近一直在使用2D和Jagged Arrays,并尝试将每个元素添加到一行中,并将每个元素添加到列中。我得到了打印出每行总和的代码,但是在添加数组中的每一列时遇到了困难。

注意:我尝试过sum += numbers[c][r];,但它无效

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

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

//Adding each row in the array          
int sum = 0;
          for(int r = 0; r < numbers.length; r++) {
             sum = 0;
             for(int c = 0; c < numbers[r].length; c++) {
                sum += numbers[r][c];
             }
             System.out.println("Sum of row: " + sum);
          }

//Adding each column in the row          
int sum2 = 0;
          for(int r = 0; r < numbers.length; r++) {
             sum2 = 0;
             for(int c = 0; c < numbers[r].length; c++) {
                sum2 += numbers[c][r];
             }
             System.out.println("Sum of column: " + sum2);
          }
       }
    }

1 个答案:

答案 0 :(得分:0)

好的,所以你有点走上正轨。让我在进入代码之前解释一下思考方式。

你有一个非方形的二维数组,你想要每个行和列的总和。行很简单,你已经完成了。列有点困难,因为它非方形,你会遇到ArrayOutOfBoundsExceptions,因为它试图访问不存在的数组艺术。

要解决此问题,您需要知道最大列数,然后遍历数组。但是,您还需要注意ArrayOutOfBoundsException,确保考虑当前列迭代何时大于行长度。

我在行总和部分添加了int max,这样我就不必多次迭代相同的信息了。

之后,我将'{1}}替换为'max',因为我们需要迭代X列。

然后我遍历行,因为它们是统一的,并且很容易被c < numbers[r].length找到。

因此,对代码进行简单更改即可获得所需的结果。见下文。

numbers.length