猿问

谁帮我看哈这段简单的代码,怎么超出范围了?

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++){

    // 如果当前值大于max,则替换max的值

     if(scores[i]>max){

     max = scores[i];

     }

    // 如果当前值小于min,则替换min的值

     if(scores[i]<min){

     min = scores[i];

     }

     //累加求和

     count = count+scores[i];

      }

          //求平均值

 avg = count%scores[i];

      System.out.println("数组中的最大值是"+max);

      System.out.println("数组中的最小值是"+min);

      System.out.println("数组的和值是"+count);

      System.out.println("数组的平均值是"+avg);

}


}

这是我的代码,运行后怎么提示超出数组长度?帮我看一哈。


Mr_hee
浏览 1970回答 6
6回答

IT界小嫩草一枚

为什么会报数组越界。 因为当循环跳出的那一刻是i=scores.length, 即i=7, 在你求平均值的时候写scores[i]就是scores[7], 你定义的数组下标最大是6, 所以越界求平均值。 应该是综合除以个数,即count÷i或者count÷scores.lengh(用这种方式比较好)。count÷scores.length应该写成count/scores.length, %是取余。正确的输出结果是: 数组中的最大值是148数组中的最小值是4数组的和值是343.0数组的平均值是49.0希望能帮到你:)

farrell4303280761

最后一次循环越界

黄继琤

因为你循环处理之后,跳出循环,i=7 然后执行到avg = count%scores[i];时,scores[7]当然越界了

慕慕1370455

avg=count/i(或scores.length),求平均值不是取余,不用%

慕后端0557998

当 i 大于数组下标时(scores[i]不存在)跳出for循环  然后就报错咯 

952711

avg=count/score[].length改成这样看看
随时随地看视频慕课网APP

相关分类

Java
我要回答