2013-01-04 27 views
0

**這是我創建改變字段在Java

class Student{ 
private String name; 

private float avGrade; 

private float outstandingGrade = 82.0f; 

public Student() { } 

public Student(String Name, float avg) { 
    name = Name; 
    avGrade = avg; 
} 

public String getName() { 
    return name; 
} 
public void setName(String Name) { 
    name = Name; 
} 

}

類的一部分,這是主要的並且在它的另一方法:

public static void main(String[] args) { 
    Student[][] school = CreateStudentMat(); 
    school[0][0].setName("Student"); 
} 
public static Student[][] CreateStudentMat(){ 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter number of classes in school: "); 
    int NumClasses = input.nextInt(); 
    Student[][] matrix = new Student[NumClasses][]; 
    for(int i = 0; i<matrix.length; i++){ 
     System.out.println("Please enter number of students in class " +(i+1)); 
     matrix[i] = new Student[input.nextInt()]; 
    } 
    return matrix; 
} 

當我試圖改變對象名稱[0] [0] 與學校[0] [0] .setName(「學生」);

我得到一個錯誤

異常線程 「main」 顯示java.lang.NullPointerException 在Homework3.main(Homework3.java:13)

我做錯了什麼嗎?

回答

6
  • 您正在實例化與matrix = new Student[NumClasses][]
  • 您正在實例化的N個一維陣列的二維陣列與matrix[i] = new Student[input.nextInt()]
  • NOT實例與matrix[i][j] = new Student()

因此,每一個學生二維數組是正確創建的,但每個學生的參考仍然是null,因爲你沒有實例化任何。

0

沒有學生對象。您從未在任何地方撥打new Student()。由於數組沒有任何對象,因此無法在空值上調用方法。

0

也許問題的存在:

Student[][] matrix = new Student[NumClasses][]; 

嘗試初始化您的數組的第二維度的大小。