猿问

如何使用二维数组调用函数

我正在尝试创建一个二维数组,然后找到数组内所有元素的平均值


 float[][] dArr = {

                      {1.0f,2.0f},

                      {2.0f,2.0f}

                    };

    System.out.println(average(dArr[2][2]));


    }

    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;

    }

但是一个错误说有不兼容的类型:float cannot be converted to float[][]


米琪卡哇伊
浏览 137回答 3
3回答

暮色呼如

调用时并没有真正将二维数组传递给函数System.out.println(average(dArr[2][2]));相反,您只传递了 1 个浮点数,或者至少您会传递,但是索引 [2][2] 上的元素超出了范围。因此,将您的函数调用更改为System.out.println(average(dArr));并且数组应该正确传递给函数。

Smart猫小萌

一些东西。dArr.length 只计算数组中的行数,而不是项目。所以你应该在循环中创建一个计数器来除以,或者使用上面建议的乘积。将总和改为+= dArr[i][j];使用 =+ 不起作用。在你的 for 循环中你想使用 ++i 和 ++j,而不是 i++ 和 j++。在您的嵌套循环中,您正在测试 i 而不是 j。这是功能代码public static void main(String[] args) {&nbsp; &nbsp;float[][] dArr = {&nbsp; &nbsp; &nbsp; &nbsp;{1.0f, 2.0f},&nbsp; &nbsp; &nbsp; &nbsp;{2.0f, 2.0f}&nbsp; &nbsp;};&nbsp; &nbsp;System.out.println(average(dArr));}static double average (float dArr[][]){&nbsp; &nbsp; double sum = 0;&nbsp; &nbsp; double count = 0;&nbsp; &nbsp; for(int i = 0; i < dArr.length; ++i){&nbsp; &nbsp; &nbsp; &nbsp; for(int j = 0; j < dArr[i].length; ++j){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum += dArr[i][j];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; count += 1;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(sum);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return sum/count;}

宝慕林4294392

您正在将数组的一个值dArr[2][2](无论如何都超出范围;见下文)传递给您的函数。您需要将整个数组传递给 function average。此外,您需要更改函数的方法签名:float[][] dArr = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {1.0f,2.0f},&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {2.0f,2.0f}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};System.out.println(average(dArr));static double average (float[][] dArr){&nbsp; &nbsp; double sum=0;&nbsp; &nbsp; for(int i=0;i<dArr.length;i++){&nbsp; &nbsp; &nbsp; &nbsp; for(int j=0;i<dArr[i].length;j++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum=+dArr[i][j];&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return sum / (dArr.length * dArr[0].length);}您会注意到最后一行的变化。要获得数组中元素的总数,我们必须将行乘以列。dArr.length给出行数,同时dArr[0].length给出第一行的列数,每一行都相同。另请注意,java 中的数组是零索引的。因此,数组中的最后一个元素[1][1]没有索引[2][2]。你在你的函数体中做对了,太棒了!
随时随地看视频慕课网APP

相关分类

Java
我要回答