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

大神快看,运行结果只有最小值不对,一直是零。

大神快看,运行结果只有最小值不对,一直是零。

潮男123 2016-04-11 16:58:34
 Scanner input=new Scanner(System.in);        int[] nums = new int[3];        int max = nums[0]; // 假定最大值为数组中的第一个元素        int min  = nums[0]; // 假定最小值为数组中的第一个元素        double sum = 0;// 累加值        double avg = 0;// 平均值        for (int i = 0; i < nums.length; i++) {        nums[i]=input.nextInt();        // 如果当前值大于max,则替换max的值        if(nums[i]>max){         max=nums[i];           }        // 如果当前值小于min,则替换min的值        else if(nums[i]<min)        {            min=nums[i];         }        // 累加求和        sum=sum+nums[i];        }        // 求平均值       avg=sum/nums.length;        System.out.println("数组中的最大值:" + max);        System.out.println("数组中的最小值:" + min);        System.out.println("数组中的平均值:" + avg);    } }
查看完整描述

3 回答

已采纳
?
guozhchun

TA贡献103条经验 获得超76个赞

// 还没有读取数据放入数组中就进行以下的操作,实际上相当于 int max = 0; int min = 0
// 这样如果读取的数都是大于0,那么最小值会一直是0,如果读取的数都小于0,那么最大值会一直为0
int max = nums[0]; // 假定最大值为数组中的第一个元素
int min  = nums[0]; // 假定最小值为数组中的第一个元素

解决方法有两种:一是把最大值设得足够小,让所有读取的数都比它大,同时把最小值设得足够大,让所有读取的数都比它小。另一种方法是先读取所有的数,然后把第一个值赋给 min 和 max,然后重新用一个循环来比较得到结果

查看完整回答
反对 回复 2016-04-12
  • 潮男123
    潮男123
    大神你好,用键盘输入的方法怎么实现“先读取所有数”呢?这种方法的程序怎么写?
  • guozhchun
    guozhchun
    这回复居然没有空格缩进,我也是醉了
?
慕无忌3351045

TA贡献14条经验 获得超0个赞

int min  = nums[0]; 此时还未从键盘输入,所以nums数组中每一项都为初始化的值:0

因为你的最小值min一开始就赋值为0了,你之后输入的数都大于0,所以最小值会一直为0呀

查看完整回答
反对 回复 2016-04-12
  • 3 回答
  • 0 关注
  • 1593 浏览

添加回答

举报

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