diff options
| author | mokha <mokha@cisco.com> | 2019-05-05 19:57:14 -0600 |
|---|---|---|
| committer | mokha <mokha@cisco.com> | 2019-05-05 19:57:14 -0600 |
| commit | 7b4cb6a2eef3a0fcde7e998832427c73599e4a0a (patch) | |
| tree | 75acc7cd8f3bd8a087e909db182c9e18a66879a1 /src/Q5/EmployeeSavings.java | |
| parent | 99a28d2dba93642e89a62ecf905a3bd4f138318d (diff) | |
use the exact naming convention for directories described by instructor
Diffstat (limited to 'src/Q5/EmployeeSavings.java')
| -rw-r--r-- | src/Q5/EmployeeSavings.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/Q5/EmployeeSavings.java b/src/Q5/EmployeeSavings.java new file mode 100644 index 0000000..44eac10 --- /dev/null +++ b/src/Q5/EmployeeSavings.java @@ -0,0 +1,84 @@ +package ca.mokhan.assignment1; + +import java.util.ArrayList; +import java.util.Currency; +import java.util.Locale; +import java.util.Random; + +public class EmployeeSavings extends AddressBook { + private double accountValue; + private double[] monthlyInterests; + private double[] monthlySavings; + private double monthlyContribution; + public static final double ANNUAL_INTEREST_RATE = 0.05; + + public EmployeeSavings(String firstName, String lastName) { + this(firstName, lastName, new Random().nextInt(800 - 100) + 100.0); + } + + public EmployeeSavings(String firstName, String lastName, double monthlyContribution) { + super(firstName, "", lastName); + this.monthlyContribution = monthlyContribution; + this.accountValue = predictBalanceAfterMonths(12); + } + + // what is d1, d2? + public EmployeeSavings(String firstName, String lastName, double[] d1, double[] d2) { + super(firstName, "", lastName); + } + + public double getAccountValue() { + return this.accountValue; + } + + public double[] getMonthlyInterests() { + return this.monthlyInterests; + } + + public double[] getMonthlySavings() { + return this.monthlySavings; + } + + public double[] calculateInterests() { + this.monthlyInterests = new double[12]; + for (int i = 1; i <= 12; i++) this.monthlyInterests[i - 1] = predictInterestAfterMonths(i); + return this.monthlyInterests; + } + + public double[] generateMonthlySavings() { + this.monthlySavings = new double[12]; + for (int i = 1; i <= 12; i++) this.monthlySavings[i - 1] = predictBalanceAfterMonths(i); + return this.monthlySavings; + } + + public double predictBalanceAfterMonths(int months) { + double monthlyRate = ANNUAL_INTEREST_RATE / 12.0; + double balance = 0; + + for (int i = 0; i < months; i++) + balance = (balance + this.monthlyContribution) * (1 + monthlyRate); + + return Math.round(balance * 1000) / 1000.0; + } + + public double predictInterestAfterMonths(int months) { + return Math.round( + (predictBalanceAfterMonths(months) - (months * this.monthlyContribution)) * 1000) + / 1000.0; + } + + public static String getReport(EmployeeSavings[] accounts) { + ArrayList<String> statement = new ArrayList<String>(); + + for (EmployeeSavings account : accounts) statement.add(account.toString()); + + return String.join(System.lineSeparator(), statement); + } + + @Override + public String toString() { + Currency currency = Currency.getInstance(Locale.getDefault()); + return String.format( + "%s %s%.2f", super.getFirstName(), currency.getSymbol(), this.getAccountValue()); + } +} |
