Java银行账户逻辑

时间:2017-10-20 23:09:24

标签: java logic boolean-logic

我正在尝试使用余额,存款和取款等少量工具创建银行帐户类。我创建了超类和两个子类。其中一个子类(支票账户)需要在2次交易后收取10美元的费用。

我在以下程序中遇到小麻烦。这是该计划的一小部分,我尝试了一切,但我想不出解决方案。该问题在代码中标有星号框注释。附上银行账户(超级)课程供您参考。

即使因没有足够的余额而取款失败,也会收取交易费用。我明白为什么会这样做,但有人可以建议任何解决方案吗?

//This is the sub Class "Checking Account" 
public class CheckingAccount  extends BankAccount
{
//Private Instance Variablea
private double dTransFee;
private int iFreeCheckPerMonth;
private int iNumChecks;
//Constructor
public CheckingAccount(String sName, int iAccountNumber)
{
    super(sName, iAccountNumber);
     dTransFee = 10;
     iFreeCheckPerMonth = 2;
     iNumChecks=0;
}
//Overriding method from the Bank Account Class
public boolean bWithdrawl (double dMoney)
{
    if (iNumChecks<2)
    {
        super.bWithdrawl(dMoney);
        iNumChecks++;
        iFreeCheckPerMonth--;
    }
    else 
    {
        /****************************
         * I DON'T KNOW HOW I CAN MAKE STATEMENT SUCH AS
         * IF BWITHDRAL IS FALSE(FAILS) DON'T TAKE OUT 10 FROM BALANCE.
         ***************************/
        super.bWithdrawl(dMoney);
        dBalance = dBalance- dTransFee;
        iNumChecks++;
        iFreeCheckPerMonth--;
    }
    return false;
}

//Prints how many checks are left
    public int FreeChecksLeft ()
{       
    return iFreeCheckPerMonth; 
}

//Prints how many checks have been used
public int CheckUsed ()
{
    return iNumChecks;
}

}

//Super Class

/**************************************************************
*Name: BankAccount
*Input:Name and account number. Deposit and withdrawal amount for methods
*Output: None
*Description:
* Date: 10/19/2017 Author: Apurva Gandhi
**************************************************************/
public class BankAccount 
{
//Private Instance Variable
protected double dBalance;
protected int iAccountNum;
protected String sOwnerName;

//Constructor
public BankAccount (String sName, int iAccountNumber)
{
    iAccountNum = iAccountNumber;
    sOwnerName = sName;
}
/**************************************************************
*Name: deposit
*Input:amount of money
*Output: none
*Description: takes the amount of money and add the amount to the balance. 
* Date: 10/19/2017 Author: Apurva Gandhi
**************************************************************/
//Method for deposit
public void deposit(double dMoney)
{
    dBalance += dMoney;

}
/**************************************************************
*Name: Withdrawal
*Input:amount of money
*Output: none
*Description: takes the amount of money and subtracts the amount from the balance. 
* Date: 10/19/2017 Author: Apurva Gandhi
**************************************************************/
//Method for Withdrawal
public boolean bWithdrawl (double dMoney)
{
    if (dMoney <= dBalance)
    {
    dBalance -= dMoney;
    }
    return false;
}
//Method to get balance
public double getBalance()
{
    return dBalance;
}

}

//Here is the tester for Checking Account

公共类CheckingTester {

public static void main(String[] args)
{
    //Create Checking account
    CheckingAccount ca1 = new CheckingAccount ("Apurva", 1000);

    //Make deposit
    ca1.deposit(500);

    //Verify that it worked
    System.out.println("After deposit the balance is: " + ca1.getBalance()+" Expected:500");

    //Check #1
    //Test a withdrawal
    ca1.bWithdrawl(100);

    //Verify that it worked
    System.out.println("After withdrawal the balance is : " + ca1.getBalance()+ " Expected 400");

    //Checks the number of free checks available for use
    ca1.FreeChecksLeft();
    System.out.println("Number of Free Checks left are: "+ca1.FreeChecksLeft()+ " Expected 1");

    //Check how many checks have been used 
    ca1.CheckUsed();
    System.out.println("The number of check used are: "+ ca1.CheckUsed()+(" Expected 1"));

    //Check #2
    ca1.bWithdrawl(100);
    System.out.println("After withdrawal the balance is : " + ca1.getBalance()+ " Expected 300");

    //Check 3
    ca1.bWithdrawl(100);
    System.out.println("After withdrawal the balance is : " + ca1.getBalance()+ " Expected 190");

    //Check 4
    ca1.bWithdrawl(200);
    System.out.println("After withdrawal the balance is : " + ca1.getBalance()+ " Expected 190");

    }

}

0 个答案:

没有答案