Create a class named AccountSavings. This class has a static double variable
which stores the annual interest rate for all account holders. The name of variable is
annualInterestRate. The class also has another double variable named savingsBalance
which stores balance for current account.
a. Write a constructor to create an account with specified balance. Add a
validation whether the balance is greater than 0.0. If it is less than 0.0 then throw
an exception.
b. Write a non-static calculateMonthlyInterest method to calculate the monthly
interest by multiplying the savingsBalance by annualInterestRate divided by 12
– the interest should be added to savingsBalance.
c. Write a static method named modifyInterestRate to set the annual interest rate.
Add a validation whether the rate is greater than equal to 0.0 and less than or
equal 1.0. Otherwise, throw an exception.
d. Write a toString method which returns savingsBalance in a string format.
After that, create AccountSavingsTest class. Create two objects from the class
AccountSavings with balances $2000.00 and $3000.00. Then, set the interest rate to 4%,
then calculate the monthly interest rate for each 12 months for each object and print the
new balances with toString method for each object. UPLOAD AccountSavings.java
AND AccountSavingsTest.java.
What I have tried:
I want to print the output using toString() method. I have tried "Account1.toString() but it won't work, I also tried to format the output in the superclass and subclass. I can use the get method to display the output, but it's not the way it's supposed to be. Can you point out my errors? Thank you so much!!!
public class AccountSavings {
private static double annualInterestRate;
private double savingsBalance;
public AccountSavings (double savingsBalance) {
if (savingsBalance < 0.0) {
throw new IllegalArgumentException ("The balance must be > 0.0");
}
this.savingsBalance = savingsBalance;
}
public double getSavingsBalance() {
return savingsBalance;
}
public double calculateMonthlyInterest() {
double result;
result = (double) (savingsBalance * annualInterestRate / 12);
return savingsBalance = savingsBalance + result;
}
public static void modifyInterestRate (double newRate){
if (newRate <= 0.0 || newRate >= 1.0) {
throw new IllegalArgumentException ("Annual rate must > 0.0 and < 1.0");
}
annualInterestRate = newRate;
}
@Override
public String toString () {
return String.format ("%.2f%n",getSavingsBalance());
}
}
public class AccountSavingsTest {
public static void main (String [] args) {
AccountSavings Account1 = new AccountSavings (2000.00);
AccountSavings Account2 = new AccountSavings (3000.00);
Account1.modifyInterestRate(0.04);
Account2.modifyInterestRate(0.04);
System.out.println("Monthly balances for Account1 at 4%");
System.out.println("Balances: ");
for (int i = 0; i <12; i++){
Account1.calculateMonthlyInterest();
System.out.println("Month " + (i+1) + ": " + String.format ("$%.2f", Account1.getSavingsBalance()));
}
System.out.println();
System.out.println("Monthly balances for Account2 at 4%");
System.out.println("Balances: ");
for (int i = 0; i <12; i++){
Account2.calculateMonthlyInterest();
System.out.println("Month " + (i+1) + ": " + String.format ("$%.2f", Account2.getSavingsBalance()));
}
}
}