?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
提交
取消