[英]Why am I getting ArrayIndexOutOfBoundsException?
所以我在老師不在的時候得到了這份作業,基本上我必須做一個學生項目。 學生有名字,分數和平均分。 為了計算平均值,我決定將標記存儲在int[]
數組中。
public void addQuiz(int m)
{
int l = (marks.length);
marks[l] = m;
}
int[] marks = new int[8];
但是當我運行函數時:
student.addQuiz(90);
我得到:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
有什么幫助嗎?
我不確定int[8]
部分的功能,但是它在我遵循的教程中,如果沒有它,它會給我一個null
指針。 總共有8個標記,所以我做到了8。
您不能將事物動態添加到數組中。 您應該改為使用數組列表。
Arraylist<Integer> marks = new ArrayList<Integer>();
然后在您的addQuiz方法中:
public void addQuiz(int m) {
marks.add(m)
}
您可能還需要更改計算平均值的方法,但這應該是微不足道的,我留給您。
錯誤消息:ArrayIndexOutOfBoundsException:8
您有一個包含8個元素的數組,索引從0到7(含0)。 該數組的長度為8,實際上您只能訪問最多7的標記[8]。
在Java中,數組索引從'0'開始。 因此,您無法訪問等於數組長度的數組索引。如果您的數組長度為'8',則數組的最后一個索引為'7'而不是'8'。 如果嘗試訪問數組的非法索引,則拋出ArrayIndexOutOfBoundException
。 該代碼應更改為
public void addQuiz(int m)
{
int l = (marks.length); //assuming marks is an array of length '8'
marks[l-1] = m; //index is 7 now
}
要計算平均值,您需要對數組的內容求和(假設所有值都是int值),然后除以數組的長度
int sum = 0;
int avg = 0;
for(int i=0; i<array.length;i++){
sum =sum+array[i];
}
avg = sum/array.length;
希望這能給我一個主意
使用Arraylist<Integer>
,然后可以動態添加到列表中
該數組中沒有該marks[l] = m;
索引marks[l] = m;
。 使用marks[l-1] = m;
您可以在main中將此for循環調用以獲得8次標記。
for(int i=0;i<8;i++)
student.addQuiz(<marks you want to enter>, i);
您可以定義如下的addQuiz函數
public void addQuiz(int m, int arrayIndex)
{
marks[arrayIndex] = m;
}
int []標記=新的int [8]; //將保持原樣
這些是最小的更改。 通過將數組標記傳遞給addQuiz作為參數,可以使代碼更好。 但這也將起作用,只是這不是編寫代碼的最佳方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.