Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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