2014-04-22 201 views
0

我不是一個get程序員,我一直有我的代碼問題。 我得到的錯誤:數組混淆

`java.lang.ArrayIndexOutOfBoundsException: 0` 

一些幫助將不勝感激。謝謝。

我的代碼:

import java.util.Scanner; 
public class Gradebook1D { 

    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    int[] id = new int[0]; 
    double[] quiz1 = new double[0]; 
    double[] quiz2 = new double[0]; 
    double[] quiz3 = new double[0]; 

    int idStudent = 0; 
    System.out.print("Enter how student's are in your class: "); 
    idStudent = input.nextInt(); 

    double[] sum = new double[0]; 
    for (int i = 0; i < idStudent; i++){ 
     System.out.println("Enter student ID: "); 
     id[i] = input.nextInt(); 

     System.out.print("\n Enter score for Quiz1: "); 
     quiz1[i] = input.nextInt(); 

     System.out.print("\n Enter score for Quiz2: "); 
     quiz2[i] = input.nextInt(); 

     System.out.print("\n Enter score for Quiz3: "); 
     quiz3[i] = input.nextInt(); 

     sum[i] = quiz1[i] + quiz2[i] + quiz3[i]; 
    } 
    } 
} 
+1

'new int [0]','new double [0]'表示零大小! – Baby

+0

謝謝大家的幫助。我不知道我必須先獲取輸入然後初始化數組。 – SkyToken

回答

1

當你做new int[0],新的double [0]等等時,你開始的是一個零大小的數組......嘗試在知道需要多長時間後設置陣列大小:

Scanner input = new Scanner(System.in); 
System.out.print("Enter how student's are in your class: "); 
int idStudent = input.nextInt(); 

int[] id = new int[idStudent]; 
double[] quiz1 = new double[idStudent]; 
double[] quiz2 = new double[idStudent]; 
double[] quiz3 = new double[idStudent]; 
double[] sum = new double[idStudent]; 

for (int i = 0; i < idStudent; i++){ 
    //Now all arrays have size idStudent so 'i' will be in bounds 
} 
+0

謝謝。我不知道你必須先獲得輸入然後初始化數組。 – SkyToken

+0

還有另一種選擇,即使用List對象而不是Array。如果您不知道運行時的大小或隨着時間的推移大小增加,則使用列表;但是,這是一個更高級的話題。 – bcorso

1

不是最好的Java程序員,但我幾乎可以肯定你是數組的大小與設置爲0 [0]。

int [ ] nums = new int [ 8 ]; 
for(int ctr = 0; ctr < 8; ctr++) 
{ 
    //logic here  
} 

將是一個如何做一個正確的數組的例子。

1

初始化一個數組時,必須指定的長度爲。當你做

int[] id = new int[0]; 

你指定該數組將有長度0。所以,你甚至不能訪問它的第一個元素(通過使用id[0]

可以初始化它,例如,以下列方式

int[] id = new int[4]; // length 4 

但因爲你得到一個代表數量的輸入學生,我想這將是數組的長度:

int[] id = new int[idStudent]; 

,但是,你必須做你收到輸入這個

1

您正在分配一個大小爲0的數組。因此,陣列中沒有「插槽」,因此當您嘗試引用一個插槽時,它會超出邊界。如果您想要一個「靈活」大小的數組,您可以在其中輕鬆添加元素,請改用ArrayList

2

初始化idquiz1quiz2quiz3idStudent這樣

int[] id = new int[idStudent]; 
double[] quiz1 = new double[idStudent]; 
double[] quiz2 = new double[idStudent]; 
double[] quiz3 = new double[idStudent]; 

該錯誤的原因是你聲明數組大小爲零。你不能插入元素的數組大小爲零

0

使用本

int[] id = new int[size thats you require]; 

,而不是

int[] id = new int[0]; 

希望你能得到你的解決方案

0

Java數組大小是固定的初始化。您創建了大小爲0的數組。您需要首先創建數組作爲最大大小,以保留您期望的結果,因爲Java數組在創建後不會動態增加。