在if语句中创建对象

时间:2017-05-17 10:45:51

标签: java if-statement constructor scope

我试图为银行帐户制作一个简单的程序。我创建了一个名为Bank to make和instance的类,在主类中,main方法是,我创建了一个if语句,它将创建一个类的实例" Bank"取决于满足的条件。问题是我可以使用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);
      }
 }

3 个答案:

答案 0 :(得分:2)

将Bank对象声明在if else作用域之外,以便稍后可以访问它,将其初始化为 null 并为Bank的新实例分配引用,具体取决于条件if-else

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 :(得分:2)

您的Bank对象只会存在于if子句中。应改为:

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

答案 2 :(得分:0)

创建未初始化的 Bank 类的实例。然后在需要的地方初始化它。请注意,account1变量是在嵌套条件语句之外创建的。

post_date

您希望在此实例中尽可能多地重用account1变量,而不是创建新实例。