3 回答
TA貢獻(xiàn)39條經(jīng)驗(yàn) 獲得超47個(gè)贊
您好,題主的代碼一共有三處錯(cuò)誤,
1)最大值比較不對(duì),不應(yīng)該每次和nums[0]比;既然假定了最大值為nums[0],應(yīng)該每次和max比較
2)最小值比較不對(duì),不應(yīng)該每次和nums[0]比;應(yīng)該每次和min比較
3)平均數(shù)求值不對(duì),應(yīng)該用總數(shù)除以個(gè)數(shù),這個(gè)的i是個(gè)在for循環(huán)里的局部變量,直接用i除,需要把i在for循環(huán)前聲明
以下是改正后的代碼,請(qǐng)參考
public?static?void?main(String[]?args)?{
//?定義一個(gè)整型數(shù)組,并賦初始值
int[]?nums?=?{61,?23,?4,?74,?13,?148,?20?};
int?max?=?nums[0];//?假定組大致為數(shù)組中的第一個(gè)元素
int?min?=?nums[0];//?假定最小值為數(shù)組中的第一個(gè)元素
double?sum?=?0;//?累計(jì)值
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)驗(yàn) 獲得超4個(gè)贊
這個(gè) i 已經(jīng)不在for循環(huán)里面,所以是訪問(wèn)不到 i ; 至于(‘i’+1)=106? 因?yàn)檫@個(gè)加上了單引號(hào);就是char 類型了;后面進(jìn)行運(yùn)算時(shí)就自動(dòng)的轉(zhuǎn)成了ascil碼;'i' 的ascil碼是105;這個(gè)平均值應(yīng)該是age = sum/nums.length;
TA貢獻(xiàn)317條經(jīng)驗(yàn) 獲得超240個(gè)贊
問(wèn)題是if(nums[i]> nums[0]),這樣的話是在用數(shù)組的第一個(gè)值和當(dāng)前循環(huán)到的值進(jìn)行比較然后把較大的值賦值給max,假設(shè)數(shù)組的第一個(gè)值為1,數(shù)組后面的元素的值都大于1,這樣計(jì)算出來(lái)的最大值會(huì)是20而不是148,應(yīng)該改成if (nums[i] > max),最小值同理。這么求平均值貌似是錯(cuò)誤的,因?yàn)闀?huì)把i的ascii碼值105加1后進(jìn)行計(jì)算,而不是除數(shù)組的長(zhǎng)度。
添加回答
舉報(bào)
