我坐在这里,试图弄清楚如何使用二维数组。
我显然有一个名为" 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
答案 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数组和行索引并返回行的总和。我真的很抱歉没有修改你的原始代码,但事实上它是用不同的语言让我更难理解。