JAVA如何计算二维数组中每一行的总和?

Kas*_*Kay 2 java arrays arraylist multidimensional-array

我正在编写一些代码来计算数组中每一行的总数。

    public static int sum(int[][] array) {
    int total = 0;
    for (int i = 0; i < array.length; i++) {
        for (int k = 0; k < array[i].length; k++) {
            total = total + array[i][k];
        }
    }
    return total;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是要计算出二维数组中所有数字的总和,但是我正在尝试计算出数组中每一行的总数。

    public static int[] rowSums(int[][] array) {
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何对代码进行每一行的2D数组计算。

Ani*_*wat 5

如果您使用的是Java 8,则可以通过以下方式进行:

int[] ar = Arrays.stream(new int[][]{{1,2},{3,5}}) // source
                 .mapToInt(arr -> IntStream.of(arr).sum()) // sum inner array
                 .toArray(); // back to int[]
System.out.println(Arrays.toString(ar)); // print the array
Run Code Online (Sandbox Code Playgroud)

没有流:

int[][] arr = {{1,2},{3,5}};
// create a array that stores the total of each inner array
int[] total = new int[arr.length];
// first loop for outer array
for (int i = 0; i < arr.length; i++) {
    // loop for inner array
    for (int k = 0; k < arr[i].length; k++) {
        // since default value of total[i] is 0, we can directly use +=
        total[i] += arr[i][k];
    }
}
// print the array
System.out.println(Arrays.toString(total));
Run Code Online (Sandbox Code Playgroud)


YCF*_*F_L 5

你的意思是这样的:

public static int[] sum(int[][] array) {

    //create an array of size array.length
    int[] result = new int[array.length];
    int total;

    //Loop over the first dimension 
    for (int i = 0; i < array.length; i++) {

        total = 0;//Make sure to re-initialize the total in each iteration

        //For each row calculate the sum and store it in total
        for (int k = 0; k < array[i].length; k++) {
            total += array[i][k];
        }

        //When you finish put the result of each row in result[i]
        result[i] = total;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

例子

System.out.println(
        Arrays.toString(sum(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
Run Code Online (Sandbox Code Playgroud)

输出

[3, 4, 6]
Run Code Online (Sandbox Code Playgroud)

  • 就像您解释了正在发生的事情一样,为将来寻找答案的任何人提供了帮助。 (2认同)