2017-09-11 45 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不客氣 –