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,然后重新用一个循环来比较得到结果
慕无忌3351045
TA贡献14条经验 获得超0个赞
int min = nums[0]; 此时还未从键盘输入,所以nums数组中每一项都为初始化的值:0
因为你的最小值min一开始就赋值为0了,你之后输入的数都大于0,所以最小值会一直为0呀
添加回答
举报
0/150
提交
取消