2017-08-10 11 views
0

それが動作していない、私は次のようなメッセージになっています:のJavaへのアクセス方法、私はクラスBのクラスAからメソッドにアクセスしたいが、私はクラスAとBを持っている

例外をスレッド内の「メイン」のjava.lang.NullPointerException

これを引き起こしている特定の部分がbaにアクセスしているとき:

ba.getBalance() >= LIM   
ba.debit(LIM); 

私はDだかわからないんだけどプライベートフィールドを作成し、メインフィールド内で初期化したので間違っています。

クラスB:

public class B { 

     private A ba; 
     private long balance; 

     public B(long amount, A ba){ 
     } 

     public boolean testCase(long amount){ 
      //.. 
     } 

    public long getBalance(){ 
     return balance; 
    } 

クラスA:

public class A { 

    private long balance; 

    public A(long amount){ 
    } 

    public boolean debit(long amount){ 
     //.. simple arithmetic 
    } 

    public long getBalance(){ 
     return balance; 
    } 

メイン

A aa = new BankAccount(amount1); // where amounts are user input 
B bb = new GoCardAccount(amount2, aa); 
+1

'amount'に対して行うように、' B'コンストラクタに渡す 'ba'のインスタンスをプライベートフィールドメンバー' ba'に割り当てる必要があります。 : 'public B(long amount、A ba){this.ba = ba; this.balance = amount} ' –

答えて

0

あなたはを設定することを忘れコンストラクタ

public B(long amount, A ba){ 
     balance = amount; 
     this.ba = ba; 
    } 
0

ではBのコンストラクタ this.ba = BAにこの行を追加します。あなたはAに値を代入していないので、NPEをスローします。

関連する問題