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

为什么不可以这样,求解释

求平均值avg = sum/(i+1);为什么不可以

正在回答

3 回答

 for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
        // 如果当前值大于max,则替换max的值
  if( nums[i]>max )
  {
      max = nums[i];
  }
       
       
        // 如果当前值小于min,则替换min的值
        if( nums[i]<min )
        {
            min = nums[i];
        }
       
       
        // 累加求和
        sum += nums[i];
       
  }


看这一段代码,可以看到变量 i 是 定义在 for 循环 内的,也就是说,当for循环 结束之后,变量i 也就不存在了。

因此,在for循环外面再使用变量i : avg = sum/(i+1)  ,就会有问题,因为i 没有被定义。

解决方法:

1,直接写成avg = sum/ 7.0 ;

这里提示一下,虽然结果是4是一个整数,但是还是要将分母写成一个浮点数7.0,这样当结果是小数时才能正确输出。


2,在前面定义一个变量double  count =0.0;

然后在for 循环体内加一句 count++;  来计数。

那么后面计算平均数:avg = sum/count;


1 回复 有任何疑惑可以回复我~

要先定义avg的数据类型,i是个变量,你怎么能求的出一个变量的平均数。

0 回复 有任何疑惑可以回复我~

avg = sum/length;

i+1 有可能不等于 length

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165487    人
  • 解答问题       17585    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

为什么不可以这样,求解释

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信