问答详情
源自:6-6 编程练习

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

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

提问者:慕圣8501639 2017-11-30 18:37

个回答

  • 又双叒叕是俺
    2017-12-02 14:30:25

     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;


  • 慕少1019900
    2017-11-30 19:27:16

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

  • xbroder
    2017-11-30 19:25:18

    avg = sum/length;

    i+1 有可能不等于 length