坚持可持续 2018-04-17 14:15 采纳率: 0%
浏览 1631
已采纳

JAVA初学者练习题,求找错

package report5;

import java.util.ArrayList;




public class Student {

       int id;
       String name;
       ArrayList<Integer> quizResult =new  ArrayList<Integer>(10) ;

       public Student()
       {}
       public Student( int id){

           this.id=id;
       }


       public Student(int id, String name){
           this.id=id;
           this.name=name;
       }
       public void setID(int id){ 
         this.id=id;  
       }

       public void setName(String name){
           this.name=name;
       }
       void setAllResult(int a, int b, int c, int d, int e){
           quizResult.add(a);
           quizResult.add(b);
           quizResult.add(c);
           quizResult.add(d);
           quizResult.add(e);
       }
       void setUpdate(int index, int value){
           quizResult.set(index,value );
       }

        int sum()
        {   int sum=0; 
            for(int i:quizResult)
              sum+=quizResult.get(i)   ;
            return sum;
        }
       void print(){
        System.out.printf("%d %s ",id,name);   
        for(int i=0; i<quizResult.size() ;i++)
             System.out.printf("%d ",quizResult.get(i) ) ;
        System.out.printf("(Total %d,Average %d",sum(),sum()/5);
       }


}

测试class

package report5;

public class test {

    static void method1()
    {
        Student aaa=new Student();
    Student bbb=new Student(234567);    
    Student ccc=new Student(345678,"hongg");    
    aaa.setID(123456);
    aaa.setName("chengwuql");
    aaa.setAllResult(7, 9, 7, 9, 6);
    bbb.setName("kang");
    bbb.setAllResult(7, 5, 1, 8, 8);

    ccc.setAllResult(8, 9, 8, 4, 8);
    aaa.print();
    bbb.print();
    ccc.print();

    }

    public static void main(String[] args) {
        method1();

    }

}

题目是 使用 给定的部分代码 然后完成。。。

求 aaa bbb ccc 三人五次的成绩 和平均成绩
考察 重载的构造函数

输出结果

 123456 chengwuql 7 9 7 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 7 out-of-bounds for length 5
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source)
    at java.base/java.util.Objects.checkIndex(Unknown Source)
    at java.base/java.util.ArrayList.get(Unknown Source)
    at report5.Student.sum(Student.java:47)
    at report5.Student.print(Student.java:54)
    at report5.test.method1(test.java:17)
    at report5.test.main(test.java:24)

本人不太会用arraylist ,应该是这里出问题了,谢谢

  • 写回答

3条回答 默认 最新

  • threenewbee 2018-04-17 14:26
    关注

    IndexOutOfBoundsException 下标越界
    你的数组只有5,但是你试图访问7

    for(int i:quizResult)
    sum+=quizResult.get(i) ;
    这里不对,应该是
    for(int i:quizResult)
    sum+=i;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料