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]。你在你的函數體中做對了,太棒了!
添加回答
舉報