为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Mr_hee 2016-05-20 21:09:07
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); }}这是我的代码,运行后怎么提示超出数组长度?帮我看一哈。
查看完整描述

6 回答

已采纳
?
IT界小嫩草一枚

TA贡献4条经验 获得超6个赞

  1. 为什么会报数组越界。 因为当循环跳出的那一刻是i=scores.length, 即i=7, 在你求平均值的时候写scores[i]就是scores[7], 你定义的数组下标最大是6, 所以越界

  2. 求平均值。 应该是综合除以个数,即count÷i或者count÷scores.lengh(用这种方式比较好)。

  3. count÷scores.length应该写成count/scores.length, %是取余。

  4. 正确的输出结果是: 

    数组中的最大值是148

    数组中的最小值是4

    数组的和值是343.0

    数组的平均值是49.0

希望能帮到你:)

查看完整回答
2 反对 回复 2016-05-20
?
farrell4303280761

TA贡献3条经验 获得超0个赞

最后一次循环越界

查看完整回答
反对 回复 2016-05-21
?
黄继琤

TA贡献1条经验 获得超0个赞

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


查看完整回答
反对 回复 2016-05-21
?
慕慕1370455

TA贡献1条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-05-20
?
慕后端0557998

TA贡献1条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-05-20
?
952711

TA贡献1条经验 获得超0个赞

avg=count/score[].length改成这样看看

查看完整回答
反对 回复 2016-05-20
  • 6 回答
  • 0 关注
  • 1973 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信