2017-05-17 7 views
-1

私は銀行口座の簡単なプログラムを作ろうとしています。私はBankというクラスを作成してインスタンスを作成し、mainメソッドのメインメソッドでは条件を満たす "Bank"クラスのインスタンスを作成するifステートメントを作成しました。問題は、if文の外側にあるインスタンスメソッドを使用できることです。オブジェクトクラスのコンストラクタを2つ作成しました.1つはコンストラクタメソッドのパラメータで、もう1つはパラメータを取らないメソッドです。これはif文を使用する理由です。ifステートメント内のオブジェクトを作成する

public static void start() { 
     Scanner scanner = new Scanner(System.in); 

     System.out.println("Welcome to your banking app!"); 
     System.out.println("What is your initial balance, enter below. If none enter : n"); 
     String choice = scanner.nextLine(); 

     if(choice.equals("n")){ 
      Bank account1 = new Bank(); 
     } 
     else{ 
      System.out.println("Enter your initial balance :"); 
      double ibalance = scanner.nextDouble(); 
      Bank account1 = new Bank(ibalance); 
     } 

     System.out.println("Enter 1 to see balance Enter 2 to withdraw Enter 3 to deposit money Enter 4 to close account Enter 5 to exit"); 
     choice = scanner.nextLine(); 
     double amount = 0.0; 
     if(choice.equals("1")){ 
      System.out.println("Balance is :" + account1.getBalance()); 
     } 

     else if(choice.equals("2")){ 
      System.out.println("Enter the amount to withdraw"); 
      amount = scanner.nextInt(); 
      account1.withdraw(amount); 
     } 

     else if(choice.equals("3")){ 
      System.out.println("Enter the amount to deposit"); 
      amount = scanner.nextInt(); 
      account1.deposit(amount); 
     } 

     else if(choice.equals("4")){ 
      account1.close(); 
     } 

     else if(choice.equals("5")){ 
      System.exit(0); 
     } 
} 

答えて

2

あなたは、後でそれにアクセスヌルにそれを初期化し、状況に応じBankの新しいインスタンスへの参照を割り当てることができますので、もし他のスコープの外で銀行オブジェクトを宣言すると、他の

Bank account1 = null; 
if(choice.equals("n")){ 
    account1 = new Bank(); 
} else{ 
    System.out.println("Enter your initial balance :"); 
    double ibalance = scanner.nextDouble(); 
    account1 = new Bank(ibalance); 
} 
+1

*オプションで* nullに初期化します。それは完全に個人的な好みです。 – Michael

+1

'account1'は' if'と 'else'の両方で初期化されるので、' null'に割り当てる必要はありません –

+0

ありがとうございます!コンパイラや構文エラーは一切ありません! :) – karthi97

2

あなたの銀行オブジェクトはif節にしか存在しません。

Bank account1 = null; 
if (clause){ 
    account1 = new Bank(); 
}else{ 
    ... 
} 
0

初期化されていない銀行クラスのインスタンスを作成しますに変更する必要があります。その後、必要に応じて初期化します。 account1変数は、ネストされた条件文の外部で作成されることに注意してください。

新しいインスタンスを作成する代わりに、このインスタンスで可能な限りaccount1変数を再利用したいとします。

+1

@Michael私は今、私はすぐにそれを見て、それが彼の全体のクラスだと思った。 –

+0

申し訳ありません。ところで、中括弧のないif文は使用しないでください。 – Michael

+0

@Michael私は個人的な好みを言っています。しかし再び個人的な好み。それはいずれかの方法でコンパイルする必要があります。 –

関連する問題