打印每列的总和& Java中每行Matrix的总和

时间:2017-12-29 00:06:14

标签: java arrays

我一直坚持如何找到每列的总和& Java中的矩阵行。我不知道如何分别找到列和行的结果。先感谢您。

public static void main(String[] args) {
        double [][] a = new double [2][3]; 
        a[0][0] = 1;
        a[0][1] = 2;
        a[0][2] = 3;
        a[1][0] = 4;
        a[1][1] = 5;
        a[1][2] = 6; 
        for (int i = 0; i < a.length; i++) {
            String str = "";
            for (int j = 0; j < a[i].length; j++) {
                str += a[i][j] + "\t"; 
            }
            System.out.println(str); 
        }

        // column sums
        double[] b = new double[a[0].length]; 


       // row sums

3 个答案:

答案 0 :(得分:0)

使用两个嵌套循环:

for(int i = 0; i < b.length; i++) {
    b[i] = 0;
    for(int j = 0; j < a.length(); j++) {
        b[i] += a[j][i];
    }
}

答案 1 :(得分:0)

你得到一个n维数组的一维片段的总和,你需要形成一个嵌套循环来遍历n维数组,每个维度都有一个循环。在每次迭代的最深处,一旦进入最内层嵌套循环,就可以将总值增加迭代中该特定点引用的值。

    double[][] a = new double[2][3];
    a[0][0] = 1;
    a[0][1] = 2;
    a[0][2] = 3;
    a[1][0] = 4;
    a[1][1] = 5;
    a[1][2] = 6;

    for (int row = 0; row < a.length; row++) {
        for (int col = 0; col < a[row].length; col++) {
            System.out.print(a[row][col] + "\t");
        }
        System.out.println("");
    }

    double[] rowTotals = new double[a.length];
    double[] colTotals = new double[a[0].length];

    for (int row = 0; row < a.length; row++) {
        for (int col = 0; col < a[row].length; col++) {
            rowTotals[row] += a[row][col];
            colTotals[col] += a[row][col];
        }
    }

我在你的问题中注意到你想分别找到行和列总数。如果这是必须的(我不明白为什么),你可以简单地复制嵌套循环,为列总数和行总数专用一个循环。

答案 2 :(得分:0)

    //Considering 
    // row1: 123
    // row2: 456

    List<Double> colsSum = new ArrayList<>(Collections.nCopies(a[0].length, 0.0));
    List<Double> rowsSum = new ArrayList<>();
    for(int i = 0; i < a.length; i++){
        double row = 0;
        for(int j = 0; j < a[i].length; j++){
            row += a[i][j];
            colsSum.set(j, colsSum.get(j) == 0 ? a[i][j]
                : colsSum.get(j) + a[i][j]);
        }
        rowsSum.add(row);
    }