为什么我得到ArrayIndexOutOfBoundsException?

Lev*_*han 0 java arrays int

所以当我的老师不在时,我得到了这个任务,基本上我必须做一个学生项目.学生有姓名,分数和平均分.为了计算平均值,我决定将标记存储在int[]数组中.

public void addQuiz(int m)
{
    int l = (marks.length);
    marks[l] = m;
}


int[] marks = new int[8];
Run Code Online (Sandbox Code Playgroud)

但是当我运行该功能时:

student.addQuiz(90);
Run Code Online (Sandbox Code Playgroud)

我明白了:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

我不确定这int[8]部分是做什么的,但它在我遵循的教程中,它会给我一个null没有它的指针.总共有八个标记,所以我只做了8个.

tur*_*rbo 8

您无法动态地向数组添加内容.您应该使用数组列表.

Arraylist<Integer> marks = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

然后在你的addQuiz方法中:

public void addQuiz(int m) {
    marks.add(m)
}
Run Code Online (Sandbox Code Playgroud)

您可能还需要更改计算平均值的方法,但这应该是微不足道的,我会留给您.


ile*_*ile 5

错误说:ArrayIndexOutOfBoundsException:8

你有一个包含8个元素的数组,索引从0到7(含).这个数组的长度为8,当你只能达到7时,你实际上是在尝试访问标记[8].