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

自己输入,这个代码错在哪里呢

int[] scores = new int[5];
System.out.println("请输入5个成绩:");
for(int j=1;j<=scores.length;j++){
    System.out.print("第"+j+"个学生的成绩:");
    scores[j] = new Scanner(System.in).nextInt();
}
int min = scores[0];
int max = scores[0];
double avg=0;
int sum=0;
for(int i=0;i<scores.length;i++){
    if(min>scores[i])
        min = scores[i];
    if(max<scores[i])
        max = scores[i];
    sum+=scores[i];
    avg = sum/(scores.length);
}
System.out.println("最小值:"+min);
System.out.println("最大值:"+max);
System.out.println("平均值:"+avg);



请输入5个成绩:
第1个学生的成绩:60
第2个学生的成绩:70
第3个学生的成绩:80
第4个学生的成绩:65
第5个学生的成绩:75
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at HelloWorld.main(HelloWorld.java:13)
与目标 VM 断开连接, 地址为: ''127.0.0.1:55891',传输: '套接字''

进程已结束,退出代码为 1

正在回答

3 回答

scores[j-1] = new Scanner(System.in).nextInt();
可以这样试试,原来的是因为scores数组从第二个位置也就是scores[1]开始填充数据,数组超出界限报错


0 回复 有任何疑惑可以回复我~
int[] scores = new int[5];
System.out.println("请输入5个成绩:");
//j应该从0开始,不然你之前定义的长度new int[5],就会从scores[1]开始,scores[0]就没了
for(int j=0;j<scores.length;j++){
    System.out.print("第"+(j+1)+"个学生的成绩:");
    scores[j] = new Scanner(System.in).nextInt();
}
int min = scores[0];
int max = scores[0];
double avg=0;
int sum=0;
for(int i=0;i<scores.length;i++){
    if(min>scores[i])
        min = scores[i];
    else if(max<scores[i])
        max = scores[i];
    sum+=scores[i];
    avg = sum/scores.length;
}
System.out.println("最小值:"+min);
System.out.println("最大值:"+max);
System.out.println("平均值:"+avg);


0 回复 有任何疑惑可以回复我~
#1

慕设计0259544

请输入5个成绩: 第1个学生的成绩:60 第2个学生的成绩:70 第3个学生的成绩:80 第4个学生的成绩:65 第5个学生的成绩:75 最小值:60 最大值:80 平均值:70.0
2022-01-18 回复 有任何疑惑可以回复我~
 avg = sum/(scores.length);

这里不用括号

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

自己输入,这个代码错在哪里呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信