2017-02-27 2 views
0

私は他のクラスのSystem.out.printのすべてのインスタンスを扱うためにクラス( "Screen" 。しかし、私はそれをテストするために私のコードを実行しようとすると、私のメインメソッドからnullポインタの例外を取得しています。私のプログラムのすべての印刷コマンドを処理し、NULLポインタ例外を取得する "Screen"クラスを作成する

このエラーの原因を正確に把握することはできません。ヒントをいただければ幸いです。

メインクラス

public class AtmTest { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    //Screen.displayMessage(null); 


    AtmTest test = new AtmTest(); 

} 

public AtmTest(){ 
    //write way to start all processes 
    new ATM(); 

} 

}

これは私が最初のコンソールにメッセージを表示するには、Screenクラスを呼び出すためにtyring、そして私のコードが実行を停止していますATMクラスです。

public class ATM { 

private boolean userAuthenticated; 
private int currentAccountNumber; 

private static final int BALANCE_INQUIRY = 1; 
private static final int WITHDRAWAL = 2; 
private static final int DEPOSIT = 3; 
private static final int EXIT = 4; 

private Keypad keypad; 
private Screen screen; 
private BankDatabase bankDatabase; 

public ATM(){ 
//new Screen(); 
//screen.displayMessage("hey"); 
run(); 
} 

public void run(){ 


    screen.displayMessageLine("Welcome!"); 

    authenticateUser(); 
    displayMainMenu(); 
    performTransactions(); 

}

これは、プログラムのすべての出力を制御するようになっている画面のクラスです。

public class Screen { 



public Screen(){ 


} 

public void displayMessage(String a){ 

    System.out.print(a); 
} 

public void displayMessageLine(String a){ 
    System.out.println(a); 
} 

public void displayDollarAmount(double a){ 
    System.out.println("$" + a); //make to two decimal places 
} 
+0

'screen'変数を決して初期化していないようです。 – Berger

答えて

0

ATMクラスであなたのscreen変数がNULLです。コンストラクタでそれを初期化するか、private Screen screen;という行をprivate Screen screen = new Screen()のように変更する必要があります。

関連する問題