2012-05-04 6 views
1

私は2つのJavaクラスを持っています。スケジュールはdeadlineと呼ばれるジョブの配列を使用するメインクラスです。私は配列に何かを置くことに問題があります。私はテキストファイル(それは正常に動作する)からデータを読み取り、特定のデータをdeadlineに挿入するforループを持っています。配列に挿入するときはいつでも、NullPointerExceptionが得られるので、私はうまくdeadlineを作成しません。 (...のコードは明らかに私が実際にコード化したものではありませんが、それはまだ同じ状況です。)クラス配列内のNullPointer

私はJavaでコード化して以来、しばらくしていましたので、しかし、私は本当に何ができるかは分かりません...あなたが与えることができる任意の助けに感謝します。あなたはクラスのメンバーdeadlineが、ローカル1を初期化しないように

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をシャドウイングされています。

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

つまり、クラスによってデッドラインが宣言されるため、コンストラクタ内で再宣言する必要はありません。これにより、実際にはコンストラクタ内にのみ存在する新しい変数(同じ名前)が作成されます。 – jahroy

+0

* facepalm *私はそれがそんなに馬鹿だと思った。ありがとう。それは今働きます! –

+0

私たちすべてに起こった:)私は助けることができてうれしい。 – MByD

関連する問題