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

平均值不对

总和 sum+=nums[i]; 平均值 avg=sum/7;.............为什么会出现avg结果(数组中的平均值:44.714285714285715)

正在回答

6 回答

你直接将数组里的元素进行了修改,已经不再是最开始的数组了,平均数当然是错的。

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

utopiashow 提问者

求明示
2015-03-21 回复 有任何疑惑可以回复我~
#2

小肠杆君 回复 utopiashow 提问者

人家要求你找出最大值和最小值并输出,没说让你在查找的过程中,修改数组内容。比如你的查找最大值的方法,如果nums[i]>max,首先,你是保留两者中大的数(即nums[i]),然后再将较小的数(max)替换到nums[i]中,方法完成后,你确实找到了两者中的较大值,但是同时,你也使得原本较大的nums[i]里的值变成较小的值,这样不是人为地修改了数组的元素吗?查找较小值也是一样。你在查找的同时还进行了互换,导致数组里的元素发生了改变,已经不再是原来的配方,所以也就不会有熟悉的味道了。
2015-03-22 回复 有任何疑惑可以回复我~
#3

utopiashow 提问者 回复 小肠杆君

终于明白了,谢谢你的解释。
2015-03-22 回复 有任何疑惑可以回复我~
#4

utopiashow 提问者

非常感谢!
2015-03-22 回复 有任何疑惑可以回复我~
查看1条回复

嗯。一开始是这么写的,后来结果错误。又改成了7结果还是一样的。。。nums[i].length=7吧??

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

avg = sum / nums[i].length;

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

public class HelloWorld {

    

    public static void main(String[] args) {

        

// 定义一个整型数组,并赋初值

int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };

        

int max = nums[0]; // 假定最大值为数组中的第一个元素

int min = nums[0]; // 假定最小值为数组中的第一个元素

double sum = 0;// 累加值

double avg = 0;// 平均值

        

for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素    System.out.println(nums[i]);

        // 如果当前值大于max,则替换max的值

if(nums[i]>max){

        int temp=nums[i];

        nums[i]=max;

        max=temp;

}

                

        // 如果当前值小于min,则替换min的值

     if(nums[i]<min){

        int temp=nums[i]; 

        nums[i]=min;

        min=temp;

     }      

        // 累加求和

        sum+=nums[i];

        

}  

        // 求平均值

        avg=sum/7;

        

System.out.println("数组中的最大值:" + max);

System.out.println("数组中的最小值:" + min);

System.out.println("数组中的平均值:" + avg);

}

}


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

放学路上的小学生

哈哈,你是学过C语言的吧?这是如果这个数比当前数大,则替换掉。冒泡排序法~~
2015-04-19 回复 有任何疑惑可以回复我~

为什么我的浏览器不支持ctrl+v。。。崩溃了

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

你把你整段的代码贴出来看看?

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

举报

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

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

进入课程

平均值不对

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