3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
調(diào)用時(shí)并沒有真正將二維數(shù)組傳遞給函數(shù)System.out.println(average(dArr[2][2]));
相反,您只傳遞了 1 個(gè)浮點(diǎn)數(shù),或者至少您會(huì)傳遞,但是索引 [2][2] 上的元素超出了范圍。因此,將您的函數(shù)調(diào)用更改為System.out.println(average(dArr));
并且數(shù)組應(yīng)該正確傳遞給函數(shù)。

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
一些東西。dArr.length 只計(jì)算數(shù)組中的行數(shù),而不是項(xiàng)目。所以你應(yīng)該在循環(huán)中創(chuàng)建一個(gè)計(jì)數(shù)器來(lái)除以,或者使用上面建議的乘積。將總和改為+= dArr[i][j];使用 =+ 不起作用。在你的 for 循環(huán)中你想使用 ++i 和 ++j,而不是 i++ 和 j++。在您的嵌套循環(huán)中,您正在測(cè)試 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貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
您正在將數(shù)組的一個(gè)值dArr[2][2](無(wú)論如何都超出范圍;見下文)傳遞給您的函數(shù)。您需要將整個(gè)數(shù)組傳遞給 function average。此外,您需要更改函數(shù)的方法簽名:
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);
}
您會(huì)注意到最后一行的變化。要獲得數(shù)組中元素的總數(shù),我們必須將行乘以列。dArr.length給出行數(shù),同時(shí)dArr[0].length給出第一行的列數(shù),每一行都相同。
另請(qǐng)注意,java 中的數(shù)組是零索引的。因此,數(shù)組中的最后一個(gè)元素[1][1]沒有索引[2][2]。你在你的函數(shù)體中做對(duì)了,太棒了!
添加回答
舉報(bào)