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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.