二维数组 - 找到总共1行

时间:2014-03-30 09:48:40

标签: java arrays for-loop

我坐在这里,试图弄清楚如何使用二维数组。

我显然有一个名为" row"和另一个名为"的列"所以它创建了一个矩阵。(他们实际上并没有命名行和列,但它更容易称之为)

然而,我的问题是,我必须连续收集所有值,并返回通过此计算的总数。

到目前为止我的代码看起来像这样:

public void udskrivFravaer(int[][] fravaer) {

    for (int i1 = 0; i1 < fravaer.length; i1++) {
        for (int i2 = 0; i2 < fravaer[i1].length; i2++) {
            System.out.print(fravaer[i1][i2] + ",");
        }
        System.out.println();
    }
}   

public int samletFravaer(int[][] fravaer, int elevNr) {
    int samletFravaer = 0;
    for (int i1 = 0; i1 < fravaer[elevNr].length; i1++) {
        samletFravaer += fravaer[elevNr][i1];
    }
    System.out.println(samletFravaer);
    return samletFravaer;
}

我还没有插入回复声明,所以请不要对此发表评论。 我真的无法在我的代码中找到问题,但显然某些内容无法正常运行。

编辑:编辑Zyn

3 个答案:

答案 0 :(得分:0)

您始终计算第一个row值。因为您为行传递fravaer[0][i2]; 0,将其更改为第一个循环生成的当前行索引,如:

samletFravaer = samletFravaer + fravaer[i1][i2];

答案 1 :(得分:0)

如果您尝试添加一行的所有值,那么这似乎就是问题:

samletFravaer = samletFravaer + fravaer[0][i2];

您需要将其更改为:

samletFravaer = samletFravaer + fravaer[i1][i2];

编辑 - 这将打印出总数:

public int samletFravaer(int[][] fravaer, int elevNr) {
    int samletFravaer = 0;
    for(int i1 = 0 ; i1 < fravaer[elevNr].length ; i1++)
    {
        samletFravaer += fravaer[elevNr][i1];
    }

    System.out.println( samletFravaer );
    return samletFravaer;
}

第二次编辑 - 你没有调用你的方法。将您的电话改为:

public void udskrivFravaer(int[][] fravaer) {

    for (int i1 = 0; i1 < fravaer.length; i1++) {
        samletFravaer( fravaer, i1 );
    }
}  

答案 2 :(得分:0)

    public static int sumArray(int[][] array, int row) {
        int sum = 0;

        for (int i = 0; i < array[row].length; i++) {
            sum += array[row][i];
        }

        //Keep this line if you want to print it out every time the method is called.
        System.out.println(sum);
        return sum;
    }

该代码采用2D数组和行索引并返回行的总和。我真的很抱歉没有修改你的原始代码,但事实上它是用不同的语言让我更难理解。