package com.software;public class bianChen6_6 { public static void main(String[] args) {? ? ? int scores[] = new int[]{61,23,4,74,13,148,20};? ? ? int max=scores[0];? ? ? int min=scores[0]; ? ??? ? ? int i = 0;? ? ? double count=0;? ? ? double avg=0;? ? ? for(;i<scores.length;i++){? ? // 如果當(dāng)前值大于max,則替換max的值? ? ?if(scores[i]>max){? ? ?max = scores[i];? ? ?}? ? // 如果當(dāng)前值小于min,則替換min的值? ? ?if(scores[i]<min){? ? ?min = scores[i];? ? ?}? ? ?//累加求和? ? ?count = count+scores[i];? ? ? }? ? ? ? ? //求平均值 ?avg = count%scores[i];? ? ? System.out.println("數(shù)組中的最大值是"+max);? ? ? System.out.println("數(shù)組中的最小值是"+min);? ? ? System.out.println("數(shù)組的和值是"+count);? ? ? System.out.println("數(shù)組的平均值是"+avg); }}這是我的代碼,運(yùn)行后怎么提示超出數(shù)組長度?幫我看一哈。
6 回答
已采納

IT界小嫩草一枚
TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超6個(gè)贊
為什么會(huì)報(bào)數(shù)組越界。 因?yàn)楫?dāng)循環(huán)跳出的那一刻是i=scores.length, 即i=7, 在你求平均值的時(shí)候?qū)憇cores[i]就是scores[7], 你定義的數(shù)組下標(biāo)最大是6, 所以越界
求平均值。 應(yīng)該是綜合除以個(gè)數(shù),即count÷i或者count÷scores.lengh(用這種方式比較好)。
count÷scores.length應(yīng)該寫成count/scores.length, %是取余。
正確的輸出結(jié)果是:?
數(shù)組中的最大值是148
數(shù)組中的最小值是4
數(shù)組的和值是343.0
數(shù)組的平均值是49.0
希望能幫到你:)

黃繼琤
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
因?yàn)槟阊h(huán)處理之后,跳出循環(huán),i=7 然后執(zhí)行到avg?=?count%scores[i];時(shí),scores[7]當(dāng)然越界了

慕后端0557998
TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
當(dāng) i 大于數(shù)組下標(biāo)時(shí)(scores[i]不存在)跳出for循環(huán) ?然后就報(bào)錯(cuò)咯?
添加回答
舉報(bào)
0/150
提交
取消