3 回答
TA贡献1853条经验 获得超9个赞
调用时并没有真正将二维数组传递给函数System.out.println(average(dArr[2][2]));
相反,您只传递了 1 个浮点数,或者至少您会传递,但是索引 [2][2] 上的元素超出了范围。因此,将您的函数调用更改为System.out.println(average(dArr));
并且数组应该正确传递给函数。
TA贡献1911条经验 获得超7个赞
一些东西。dArr.length 只计算数组中的行数,而不是项目。所以你应该在循环中创建一个计数器来除以,或者使用上面建议的乘积。将总和改为+= dArr[i][j];使用 =+ 不起作用。在你的 for 循环中你想使用 ++i 和 ++j,而不是 i++ 和 j++。在您的嵌套循环中,您正在测试 i 而不是 j。这是功能代码
public static void main(String[] args) {
float[][] dArr = {
{1.0f, 2.0f},
{2.0f, 2.0f}
};
System.out.println(average(dArr));
}
static double average (float dArr[][]){
double sum = 0;
double count = 0;
for(int i = 0; i < dArr.length; ++i){
for(int j = 0; j < dArr[i].length; ++j){
sum += dArr[i][j];
count += 1;
System.out.println(sum);
}
}
return sum/count;
}
TA贡献2021条经验 获得超8个赞
您正在将数组的一个值dArr[2][2](无论如何都超出范围;见下文)传递给您的函数。您需要将整个数组传递给 function average。此外,您需要更改函数的方法签名:
float[][] dArr = {
{1.0f,2.0f},
{2.0f,2.0f}
};
System.out.println(average(dArr));
static double average (float[][] dArr){
double sum=0;
for(int i=0;i<dArr.length;i++){
for(int j=0;i<dArr[i].length;j++){
sum=+dArr[i][j];
}
}
return sum / (dArr.length * dArr[0].length);
}
您会注意到最后一行的变化。要获得数组中元素的总数,我们必须将行乘以列。dArr.length给出行数,同时dArr[0].length给出第一行的列数,每一行都相同。
另请注意,java 中的数组是零索引的。因此,数组中的最后一个元素[1][1]没有索引[2][2]。你在你的函数体中做对了,太棒了!
添加回答
举报