01: /**
02:    A class to monitor the growth of an investment that 
03:    accumulates interest at a fixed annual rate
04: */
05: public class Investment
06: {
07:    /**
08:       Constructs an Investment object from a starting balance and
09:       interest rate.
10:       @param aBalance the starting balance
11:       @param aRate the interest rate in percent
12:    */
13:    public Investment(double aBalance, double aRate)
14:    {
15:       balance = aBalance;
16:       rate = aRate;
17:       years = 0;
18:    }
19: 
20:    /**
21:       Keeps accumulating interest until a target balance has
22:       been reached.
23:       @param targetBalance the desired balance
24:    */
25:    public void waitForBalance(double targetBalance)
26:    {
27:       while (balance < targetBalance)
28:       {
29:          years++;   
30:          double interest = balance * rate / 100;
31:          balance = balance + interest;
32:       }
33:    }
34: 
35:    /**
36:       Keeps accumulating interest for a given number of years.
37:       @param n the number of years
38:    */
39:    public void waitYears(int n)
40:    {
41:       for (int i = 1; i <= n; i++)
42:       {
43:          double interest = balance * rate / 100;
44:          balance = balance + interest;
45:       }
46:       years = years + n;
47:    }
48: 
49:    /**
50:       Gets the current investment balance.
51:       @return the current balance
52:    */
53:    public double getBalance()
54:    {
55:       return balance;
56:    }
57: 
58:    /**
59:       Gets the number of years this investment has accumulated
60:       interest.
61:       @return the number of years since the start of the investment
62:    */
63:    public int getYears()
64:    {
65:       return years;
66:    }
67: 
68:    private double balance;
69:    private double rate;
70:    private int years;
71: }