int [] []行的总和为int [](Java)

时间:2015-07-13 10:44:00

标签: java arrays

我试图获取2d数组中每行的总和,并将值存储在新数组中。现在sum []仅返回存储在第一行中的值。请帮助我理解我在这里失踪的内容。

public static int[] rowSum(int[][] matrix)  //find sum of digits in given row


 {


  int[] sum = new int[6];

  for (int col = 0; col < ARRAY_LENGTH; col++)
  {

     for (int row = 0; row < ARRAY_LENGTH; row++)
     {

        sum[row] += matrix[col][row];
     }


  }

  return sum;


}

3 个答案:

答案 0 :(得分:4)

由于您使用Java 8,因此可以使用:

return Arrays.stream(matrix) // Stream<int[]>
    .mapToInt(row -> Arrays.stream(row).sum()) // IntStream
    .toArray(); // int[]

答案 1 :(得分:3)

以下代码适用于不同大小的2D数组。

    public static void main(String[] args) {
        int[][] matrix = {
            {2, 3, 4, 5, 6, 7, 8, 9}, // 8 elements
            {2, 1, 4, 5, 7, 2, 86}    // 7 elements
        };
        int[] sum = rowSum(matrix);
        for (int i : sum) {
            System.out.println(i);
        }
    }

    public static int[] rowSum(int[][] matrix) //find sum of digits in given row
    {
        int[] sum = new int[matrix.length];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                sum[i] = sum[i] + matrix[i][j];
            }
        }
        return sum;
    }

答案 2 :(得分:0)

简单

public static int[] rowSum(int[][] matrix)  //find sum of digits in given row


 {
  int[] sum = new int[6];
  ARRAY_LENGTH = 6;
  for (int col = 0; col < ARRAY_LENGTH; col++)
  {

     for (int row = 0; row < ARRAY_LENGTH; row++)
     {

        sum[col] += matrix[col][row];
     }
  }  
}

小心使用ARRAY_LENGTH