标题:一个基础的错误问题,来求助。
只看楼主
Miho
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2016-4-27
结帖率:100%
已结贴  问题点数:5 回复次数:6 
一个基础的错误问题,来求助。
最近在自学JAVA,从基础起,但是做一个基础的学生成绩录入划分等级的小程序的时候不知道为什么一直出问题,我贴出来给各位大大看一下。

import java.util.Scanner;
public class scores {
   public static void main(String[] args){
       double[] scores=new double[10];
       Scanner s=new Scanner(System.in);
       //读取键盘输入并且赋值给scores数组元素
       for(int i=1;i<=10;i++){
           System.out.println("请输入第"+i+"位学生的成绩:");
           scores[i]=s.nextDouble();
       }
       for(int j=1;j<=10;j++){
          double temp=scores[j];
          if(temp>=90 && temp<=100){
              System.out.println("第" + j + "位学生成绩的等级是A");
          }
          else if (temp>=80 && temp<=90){
              System.out.println("第" + j + "位学生成绩的等级是B");
          }
          else if (temp>=70 && temp<=80){
              System.out.println("第" + j + "位学生成绩的等级是C");
          }
          else if (temp>=60 && temp<=70){
              System.out.println("第" + j + "位学生成绩的等级是D");
          }
          else{
              System.out.println("第" + j + "位学生成绩的等级是E");
          }
       }
   }
   
}



程序的出错提示是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at test1.scores.main(scores.java:11)

但是我一直没闹懂是哪里溢出了。。。
万分感谢。
搜索更多相关主题的帖子: public double import scores JAVA 
2016-04-27 10:38
franksking
Rank: 2
等 级:论坛游民
帖 子:16
专家分:43
注 册:2016-4-25
得分:2 
问题出在了数组都是从0开始,d[10]是d[0]到d[9]
2016-04-27 15:20
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:2 
程序代码:
for(int j=1;j<=10;j++){
          double temp=scores[j-1];
          if(temp>=90 && temp<=100){
              System.out.println("第" + j + "位学生成绩的等级是A");
          }
          else if (temp>=80 && temp<=90){
              System.out.println("第" + j + "位学生成绩的等级是B");
          }
          else if (temp>=70 && temp<=80){
              System.out.println("第" + j + "位学生成绩的等级是C");
          }
          else if (temp>=60 && temp<=70){
              System.out.println("第" + j + "位学生成绩的等级是D");
          }
          else{
              System.out.println("第" + j + "位学生成绩的等级是E");
          }
       }

剑栈风樯各苦辛,别时冰雪到时春
2016-04-27 15:43
virous
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2016-4-28
得分:2 
回复 楼主 Miho
数组下标是从0开始:
for(int i=0;i<10;i++){
           System.out.println("请输入第"+i+"位学生的成绩:");
           scores[i]=s.nextDouble();

这样修改后,遍历从0-9就OK了!
2016-04-28 10:43
mary_xiaoman
Rank: 2
来 自:湖南岳陽
等 级:论坛游民
威 望:3
帖 子:13
专家分:55
注 册:2010-12-21
得分:2 

抛出的异常为:数组下标越界,就是你访问的元素索引大于数组个数,数组下标是从0开始,double[] scores=new double[10]; scores[0]-scores[9],而你的程序出现了scores[10]

解决方法:

其它代码不用动,只需要在这两个地方改一下,这样你打印的信息也不会受影响:

scores[i-1]=s.nextDouble();

double temp=scores[j-1];


2016-04-29 10:53
Miho
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2016-4-27
得分:0 
回复 4楼 virous
了解了,谢谢,看来对数组还不够了解
2016-04-29 13:52
Miho
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2016-4-27
得分:0 
回复 5楼 mary_xiaoman
了解了,谢谢!
2016-04-29 13:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464175-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.145322 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved