2012-05-04 23 views
1

我有兩個java類。計劃是使用名爲deadline的作業陣列的主要類。我遇到任何問題。我有一個for循環,從文本文件中讀取數據(它工作正常),並將某些數據插入deadline。我沒有成功創建deadline,因爲無論何時我想要開始插入數組,我都會得到一個NullPointerException。 (...下面的代碼顯然不是我實際編碼的內容,但它仍然是相同的情況。)類數組中的空指針

我已經用Java編碼了一段時間,所以我可能只是忽略了一些簡單的東西,但我不確定它會是什麼......謝謝你可以給予的任何幫助。

public class Schedule { 

    private Job []deadline; 
    Schedule (int n){ 
     Job[] deadline = new Job[n]; 
    } 

    ... 
     int n = 7; 
     Schedule schedule = new Schedule(n); 

     deadline[0] = new Job("A",3,40); // This line won't compile. NullPointerException 
} 


public class Job { 

    private String name; 
    private int deadline; 
    private int profit; 

    Job(String n, int d, int p){ 
     name = n; 
     deadline = d; 
     profit = p; 
    } 

} 

回答

9

你在你的構造陰影deadline,這樣你就不會初始化類成員deadline,但當地的一個。將其更改爲:

private Job []deadline; 
    Schedule (int n){ 
     deadline = new Job[n]; 
    // ^^ note - no Job[] here 
    } 
+1

換句話說,截止日期是由類聲明的,因此您不需要在構造函數中重新聲明它。通過這樣做,你實際上創建了一個只存在於構造函數中的新變量(具有相同的名稱)。 – jahroy

+0

* facepalm *我覺得這很愚蠢。謝啦。它現在有效! –

+0

發生在我們所有人:)高興我可以幫忙。 – MByD