public class CreditCard{ Person owner; Money creditLimit; Money balance; public
ID: 3873148 • Letter: P
Question
public class CreditCard{
Person owner;
Money creditLimit;
Money balance;
public CreditCard(Person owner, Money creditLimit) {
this.owner = owner;
this.creditLimit = creditLimit;
this.balance = new Money(0);
}
public Money getCreditLimit() {
return creditLimit;
}
public Money getBalance()
{
return balance;
}
public String getPersonals()
{
return owner.toString();
}
public void charge(Money money)
{
if(money.compareTo(this.creditLimit)<0)
{
System.out.println("Amount is greater than credit limit");
}
else
{
this.balance.add(money);
}
}
public void payment(Money money)
{
this.balance.subtract(money);
}
}
public class CreditCardDemo{
public static void main(String[] args)
{
final Money CREDIT_LIMIT = new Money(1000);
final Money FIRST_AMOUNT = new Money(200);
final Money SECOND_AMOUNT = new Money(10.02);
final Money THIRD_AMOUNT = new Money(25);
final Money FOURTH_AMOUNT = new Money(990);
Person owner = new Person("Christie", "Diane",
new Address("237J Harvey Hall",
"Menomonie", "WI", "54751"));
CreditCard visa = new CreditCard(owner,
CREDIT_LIMIT);
System.out.println(visa.getPersonals());
System.out.println("Balance: " + visa.getBalance());
System.out.println("Credit Limit: " +
visa.getCreditLimit());
System.out.println();
System.out.println("Attempting to charge " +
FIRST_AMOUNT);
visa.charge(FIRST_AMOUNT);
System.out.println("Balance: " + visa.getBalance());
System.out.println();
System.out.println("Attempting to charge " +
SECOND_AMOUNT);
visa.charge(SECOND_AMOUNT);
System.out.println("Balance: " + visa.getBalance());
System.out.println();
System.out.println("Attempting to pay " +
THIRD_AMOUNT);
visa.payment(THIRD_AMOUNT);
System.out.println("Balance: " + visa.getBalance());
System.out.println();
System.out.println("Attempting to charge " +
FOURTH_AMOUNT);
visa.charge(FOURTH_AMOUNT);
System.out.println("Balance: " + visa.getBalance());
}
}
I am getting:
Diane Christie, 237J Harvey Hall, Menomonie, WI 54751
Balance: $0.00
Credit Limit: $1000.00
Attempting to charge $200.00
Amount is greater than credit limit
Balance: $0.00
Attempting to charge $10.02
Amount is greater than credit limit
Balance: $0.00
Attempting to pay $25.00
Balance: $0.00
Attempting to charge $990.00
Amount is greater than credit limit
Balance: $0.00
I supposed to get this
Diane Christie, 237J Harvey Hall, Menomonie, WI 54751
Balance: $0.00
Credit Limit: $1000.00
Attempting to charge $200.00
Charge: $200.00
Balance: $200.00
Attempting to charge $10.02
Charge: $10.02
Balance: $210.02
Attempting to pay $25.00
Payment: $25.00
Balance: $185.02
Attempting to charge $990.00
Exceeds credit limit
Balance: $185.02
Where the error in my code ? Plese help
Explanation / Answer
The problem(bug) in your code is, you forgot to update credit limit value after each transaction(charge or payment).
I corrected the code. you can observe change in CreditCard.java.
If any doubt, you can ping me up. Always happy to help.
Thank you.
Money.java
Person.java
Address.java
CreditCard.java
CreditCardDemo.java