Может кто-нибудь объяснить, почему мой метод печати не работает? - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь вызвать метод getName и getBalance из другого класса с именем Account в моем методе printbalances в банке классов.но он не работает, он печатает ноль после ввода клиента и баланса.Может кто-нибудь объяснить, почему и как это исправить?Я могу честно сказать, что не знаю, почему он не работает.

Вот класс, который его вызывает:

class Bank {

    ArrayList<Account> accounts = new ArrayList<>();
    Scanner input = new Scanner(System.in);
    Scanner q;
    String name;
    double balance;

    private Account account = new Account(name, balance);

    public void enterCustomers() {

        System.out.println("Enter customer names or press q to quit entering names: ");

        while (true) {
            String name;
            double balance;
            System.out.print("Enter a customer name: ");
            name = input.next();

            if ("q".equals(name)) { //tried using == to break but wouldnt work so tried .equals since comparing strings and works
                break;
            }

            System.out.print("Enter the opening balance : ");
            balance = input.nextDouble();
            accounts.add(new Account(name, balance));

        }
    }

    public void printBalances() {

        System.out.println("==========================");
        System.out.println("Customer            Balance");
        System.out.println("==========================");
        System.out.println(account.getName() + account.getBalance());

    }

и вот класс, где хранятся методы get:

class Account {

    private String name;
    private double balance;

    public Account(String name, double balance) {

        this.name = name;
        this.balance = balance;
    }

    public String getName() {

        return name;

    }

    //public void setName(String name) {
    //  this.name = name;
    //}
    public double getBalance() {

        return balance;

    }

    //public void setBalance(double balance) {
    //  this.balance = balance;
    //}
    public void deposit(double amount) {

        balance += amount;

    }

    public void withdrawal(double amount) {

        if (balance >= amount) {
            balance -= amount;
        } else {
            System.out.println(" Insufficient Balance. ");
        }

    }

}

Вывод, который он мне дает, таков:

Enter customer names or press q to quit entering names: 
Enter a customer name: john
Enter the opening balance : 200
Enter a customer name: mike
Enter the opening balance : 2
Enter a customer name: q

==========================
Opening account balance
==========================
Customer            Balance
==========================
null0.0

(1)deposit (2)withdraw (0)quit

Я не знаю, почему появляется null 0.0, и кто-то может объяснить, почему?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Прямо сейчас вы инициализируете account следующим образом:

private Account account = new Account(name, balance);

Но здесь name и balance не инициализируются, поэтому по умолчанию они равны null и нулю соответственно.Похоже, вы хотите напечатать имя и баланс конкретного Account объекта, поэтому я бы передал его в качестве аргумента printBalances:

public void printBalances(Account account) {

    System.out.println("==========================");
    System.out.println("Customer            Balance");
    System.out.println("==========================");
    System.out.println(account.getName() + " : " + account.getBalance());

}

Или, если вы хотите напечатать каждый балансв accounts ArrayList:

public void printBalances() {
    System.out.println("==========================");
    System.out.println("Customer            Balance");
    System.out.println("==========================");
    for(Account account : accounts) {
        System.out.println(account.getName() + " : " + account.getBalance());
    }
}
0 голосов
/ 23 сентября 2018

Есть ли еще ссылки на account?

Вы, вероятно, переопределите его в какой-то момент, потому что у него есть имя null и баланс 0.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...