Java - только оператор IF, возвращающий предложение Else - PullRequest
0 голосов
/ 21 февраля 2019

Итак, проблема в том, что мой метод вывода по какой-то причине выводит мой код:

ADL
826501829
250.0
471.0
Balance is currently:40.0
There aren't enough funds.
There aren't enough funds.

Я не очень знаком с Java, поэтому не могу понять, почему он не выводит правильные данные.опция из оператора IF

public class BankAcc {

    String accountName;
    int accountNumber;
    float accountOverdraft;
    float currentBalance;

    public BankAcc(String accountName, int accountNumber, float accountOverdraft, float currentBalance) {
        System.out.println(accountName);
        System.out.println(accountNumber);
        System.out.println(accountOverdraft);
        System.out.println(currentBalance);
    }

    public void deposit(float depositAmnt){
        currentBalance = currentBalance + depositAmnt;
        System.out.println("Balance is currently:" + currentBalance);
    }

    public void withdraw(float withdrawAmnt){
        if (withdrawAmnt <= currentBalance){
            currentBalance = currentBalance - withdrawAmnt;
            System.out.println("Balance is currently:" + currentBalance);
        } else {
            System.out.println("There aren't enough funds.");
        }
    }

    public static void main(String []args){
        BankAcc myBankAcc = new BankAcc("ADL",826501829, 250, 471);
        myBankAcc.deposit(40);
        myBankAcc.withdraw(99);
        myBankAcc.withdraw(999);
    }
}

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Ваш код "работает правильно".Вы сравниваете депозит (40) с 99 или 999, так что 40 - 99 будет "не достаточно найден", как 40-999.

Я бы порекомендовал вам использовать геттеры и сеттеры, потому что вы будетепозже запутайтесь в вашем коде.

  • Еще одна важная вещь - сохранение значений в конструкторе.
0 голосов
/ 21 февраля 2019
public BankAcc(String accountName, int accountNumber, float accountOverdraft, float currentBalance) {
        System.out.println(accountName);
        System.out.println(accountNumber);
        System.out.println(accountOverdraft);
        System.out.println(currentBalance);
    }

Вы печатаете значения, которые вы передаете, но фактически не устанавливаете их.

BankAcc myBankAcc = new BankAcc("ADL",826501829, 250, 471);

Вы передаете 471, что должно перейти в currentBalance, но это не означает, что после вашего депозитаиз 40, и вы пытаетесь извлечь 99, у вас действительно недостаточно средств.

Измените конструктор на:

public BankAcc(String accountName, int accountNumber, float accountOverdraft, float currentBalance) {
    this.accountName = accountName;
    this.accountNumber = accountNumber;
    this.accountOverdraft = accountOverdraft;
    this.currentBalance = currentBalance;
}
0 голосов
/ 21 февраля 2019

Вы не сохраняете значения, введенные в конструктор

public BankAcc(String accountName, int accountNumber, float accountOverdraft, float currentBalance) {
    this.accountName = accountName;
    this.accountNumber = accountNumber;
    this.accountOverdraft = accountOverdraft;
    this.currentBalance = currentBalance;

    System.out.println(accountName);
    System.out.println(accountNumber);
    System.out.println(accountOverdraft);
    System.out.println(currentBalance);
}
0 голосов
/ 21 февраля 2019

Вам необходимо настроить атрибуты в конструкторе следующим образом:

 public BankAcc(String accountName, int accountNumber, float accountOverdraft, float currentBalance) {
    this.accountName = accountName;
    this.accountNumber = accountNumber;
    this.accountOverdraft = accountOverdraft;
    this.currentBalance = currentBalance;
}

"this" обозначает текущий класс, из которого вы получаете доступ к атрибутам.

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