Java Полный класс банковских ошибок

1

Обновление: исправлена ошибка, добавив в поле экземпляра. - Спасибо.

Второй вопрос: Могу ли я сделать "activeaccount" текучей переменной и случайным счетом? Если да, то как?

Когда я компилирую программу, я сталкиваюсь с не могу найти символ "activeaccount" в методе MainMenu. Я смущен, почему я получаю эту ошибку, потому что я установил объект "activeaccount" в конструкторе. Есть идеи? Заранее спасибо!

public class Account
{

  /**
  * Constructor for objects of class Account
  */
  public Account()
  {
    BankAccount activeaccount = new BankAccount("Seth Killian", "Savings", 500.00, 6.0, 0.25, 10000.00);
  }

  public void MainMenu()
  {
    Scanner in = new Scanner (System.in);
    switch (in.nextInt())
    {
      case 0:
       Initialize();

      case 1: //Check balance
       activeaccount.printBalance();
       SelectOption();

      case 2: //Make a deposit        
       double amount;
       System.out.print("Deposit Amount: $");
       amount = in.nextDouble();
       activeaccount.deposit(amount);
       SelectOption();

      case 3: //Make a withdrawl
       System.out.print("Withdrawl Amount: $");
       amount = in.nextDouble();
       activeaccount.withdrawl(amount);
       SelectOption();

      case 4: //Apply Annual Interest
       activeaccount.addInterest();
       SelectOption();

      case 5: // Print Log
       activeaccount.printLog();
       SelectOption();

      case 6: // Exits application
       System.exit(0);  

      default: // Unrecognized Selection
       System.out.println ("Error: Selection Unrecognized");
       SelectOption();
    }
  }
Теги:
compiler-errors

3 ответа

2
Лучший ответ

activeaccount существует только в области конструктора. Если вы хотите получить доступ к activeaccount в других частях класса, создайте для него переменную экземпляра:

private BankAccount activeaccount; // the instance variable    

public Account() {
    activeaccount = new BankAccount("Seth Killian", "Savings", 500.00, 6.0, 0.25, 10000.00);
}

Или в одной строке (конструктор можно опустить):

private BankAccount activeaccount = new BankAccount("Seth Killian", "Savings", 500.00, 6.0, 0.25, 10000.00);
0
BankAccount activeaccount = new BankAccount("Seth Killian", 
   "Savings", 500.00, 6.0, 0.25, 10000.00);

Вы объявляете локальную переменную в своем конструкторе. Он доступен только в рамках вашего конструктора. Если вы хотите, чтобы это была переменная экземпляра, вы должны добавить ее в определение класса.

private BankAccount activeaccount;   

public Account() {
    activeaccount = new BankAccount("Seth Killian", 
       "Savings", 500.00, 6.0, 0.25, 10000.00);
}
0

Это потому, что вы создаете локальный переменный activeaccount внутри конструктора, который выходит за пределы области, когда конструктор заканчивается.

Переместите объявление до уровня класса и просто создайте его в конструкторе, например:

public class Account {
    private BankAccount activeaccount;
    public Account() {
        activeaccount = new BankAccount("Seth Killian", "Savings", 500.00, 6.0, 0.25, 10000.00);
    }
    :
    and so on.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню