2017-09-11 29 views
-2

我正在制作一个持有帐户信息的银行帐户。代码在真“if”语句后不执行

每个账户每个月最多可获得3次免费提款,在前三次免费后,每增加一笔交易收取1美元。我有一个条件,在3个免费的交易之后处理向每个交易收取客户3美元的费用,但这不是正确的。

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

的函数,该函数有4个或更多交易的每个帐户返回1,但它不提供“测试”类的适当平衡。即如果该账户每次存入1美元的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函数的东西。请帮帮我。 谢谢

+0

*显然*条件*不是真的。 – EJP

回答

-1

你不应该每次调用getTFee时间返回1,该代码会为你工作:

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

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

+0

太棒了!非常感谢! – Dylan

+0

@Dylan不客气 –