3 回答

TA貢獻(xiàn)39條經(jīng)驗 獲得超47個贊
您好,題主的代碼一共有三處錯誤,
1)最大值比較不對,不應(yīng)該每次和nums[0]比;既然假定了最大值為nums[0],應(yīng)該每次和max比較
2)最小值比較不對,不應(yīng)該每次和nums[0]比;應(yīng)該每次和min比較
3)平均數(shù)求值不對,應(yīng)該用總數(shù)除以個數(shù),這個的i是個在for循環(huán)里的局部變量,直接用i除,需要把i在for循環(huán)前聲明
以下是改正后的代碼,請參考
public?static?void?main(String[]?args)?{ //?定義一個整型數(shù)組,并賦初始值 int[]?nums?=?{61,?23,?4,?74,?13,?148,?20?}; int?max?=?nums[0];//?假定組大致為數(shù)組中的第一個元素 int?min?=?nums[0];//?假定最小值為數(shù)組中的第一個元素 double?sum?=?0;//?累計值 double?age?=?0;//?平均值 int?i?=?0; for?(i?=?0;?i?<?nums.length;?i++)?{//?循環(huán)遍歷數(shù)組中的元素 //?如果當(dāng)前值大于max,則替換max的值 if?(nums[i]?>?max)?{ max?=?nums[i]; } //?如果當(dāng)前值小于min的值,則替換min的值 if?(nums[i]?<?min)?{ min?=?nums[i]; } //?累加求和 sum?=?sum?+?nums[i]; } //?求平均值 age?=?sum?/?i; System.out.println("數(shù)組中最大的值:"?+?max); System.out.println("數(shù)組中最小的值:"?+?min); System.out.println("數(shù)組中的平均值:"?+?age); System.out.println("數(shù)組中的求和值:"?+?sum); }

TA貢獻(xiàn)4條經(jīng)驗 獲得超4個贊
這個 i 已經(jīng)不在for循環(huán)里面,所以是訪問不到 i ; 至于(‘i’+1)=106? 因為這個加上了單引號;就是char 類型了;后面進(jìn)行運算時就自動的轉(zhuǎn)成了ascil碼;'i' 的ascil碼是105;這個平均值應(yīng)該是age = sum/nums.length;

TA貢獻(xiàn)317條經(jīng)驗 獲得超240個贊
問題是if(nums[i]> nums[0]),這樣的話是在用數(shù)組的第一個值和當(dāng)前循環(huán)到的值進(jìn)行比較然后把較大的值賦值給max,假設(shè)數(shù)組的第一個值為1,數(shù)組后面的元素的值都大于1,這樣計算出來的最大值會是20而不是148,應(yīng)該改成if (nums[i] > max),最小值同理。這么求平均值貌似是錯誤的,因為會把i的ascii碼值105加1后進(jìn)行計算,而不是除數(shù)組的長度。
添加回答
舉報