求平均值avg = sum/(i+1);为什么不可以
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;
要先定义avg的数据类型,i是个变量,你怎么能求的出一个变量的平均数。
avg = sum/length;
i+1 有可能不等于 length