代码在真正的“if”语句后不执行

时间:2017-09-11 22:51:20

标签: java

我正在制作一个包含帐户信息的银行帐户。

每个帐户每月最多可获得3次免费提款,前三次免费后每笔额外交易需支付1美元。我有一个条件,即在3个免费套餐之后为每个交易向客户收取3美元,但它无法正常工作。

public static double getTFee(int accountNumber) {
    if (transactionCount[accountNumber] >= 4) {
        return 1;
    } else {
        return 0;
    }

对于每个有4个或更多交易的账户,该函数返回1,但它不能在“tester”类中提供正确的余额。即如果该账户每次收取5美元的存款,那么自从最后两次收费以来应该有3美元。但是我的测试员类在第4次交易后没有扣除1美元,在前一种情况下返回4美元的余额。这是我的测试人员课程:

System.out.println("Please enter the account number.");
            CheckingAccount.setAccountNumber(scanner.nextInt());
            for (int j = 0; j < size; j++) {
            if (bankAccount[j] == CheckingAccount.getAccountNumber()) {
                    System.out.println("Please enter the amount you desire to deposit.: ");
                    CheckingAccount.setAmount(Double.parseDouble(scanner.next()));
                    amount[j] = amount[j] + CheckingAccount.getAmount();
                    CheckingAccount.transaction(CheckingAccount.getAccountNumber());
                    value = CheckingAccount.checkTFee(CheckingAccount.getAccountNumber());
                    System.out.println("Your balance is: $" + (amount[j] - CheckingAccount.getTFee(value)));
                } else if (bankAccount[j] != CheckingAccount.getAccountNumber()) {

            }

测试类运行,因此问题不是测试器类中的条件。它必须是getTFee函数。请帮我。 谢谢

1 个答案:

答案 0 :(得分:-1)

每次拨打getTFee时都不应该返回1,此代码适用于您:

public static double getTFee(int accountNumber) {
    if (transactionCount[accountNumber] >= 4) {
        return transactionCount[accountNumber] - 3;
    } else {
        return 0;
    }

要解释一下,如果帐户已完成3次或更少的交易,getTFee应返回0,但当帐户完成4次或更多次时,我们从总交易中减去3次免费交易并返还费用(每笔交易的费用为1美元,因此无需将结果乘以1)