为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2023-04-26 14:28:03
我正在尝试创建一个二维数组,然后找到数组内所有元素的平均值 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[][]
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

调用时并没有真正将二维数组传递给函数
System.out.println(average(dArr[2][2]));

相反,您只传递了 1 个浮点数,或者至少您会传递,但是索引 [2][2] 上的元素超出了范围。因此,将您的函数调用更改为
System.out.println(average(dArr));

并且数组应该正确传递给函数。


查看完整回答
反对 回复 2023-04-26
?
Smart猫小萌

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;

}


查看完整回答
反对 回复 2023-04-26
?
宝慕林4294392

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]。你在你的函数体中做对了,太棒了!


查看完整回答
反对 回复 2023-04-26
  • 3 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信