Java Program to Calculate Maximum Annuity for a Given Investment
x
130
130
1
import java.awt.*;
2
import java.awt.event.*;
3
import javax.swing.*;
4
import java.text.*;
5
/*
6
7
8
*/
9
public class MaxWD extends JApplet
10
implements ActionListener {
11
JTextField maxWDText, orgPText, periodText,
12
rateText, numWDText;
13
JButton doIt;
14
double principal;
15
double rateOfRet;
16
double numYears;
17
int numPerYear;
18
NumberFormat nf;
19
public void init() {
20
try {
21
SwingUtilities.invokeAndWait(new Runnable () {
22
public void run() {
23
makeGUI();
24
}
25
});
26
} catch(Exception exc) {
27
System.out.println("Can't create because of "+ exc);
28
}
29
}
30
private void makeGUI() {
31
GridBagLayout gbag = new GridBagLayout();
32
GridBagConstraints gbc = new GridBagConstraints();
33
setLayout(gbag);
34
JLabel heading = new
35
JLabel("Maximum Regular Withdrawals");
36
JLabel orgPLab = new JLabel("Original Principal ");
37
JLabel periodLab = new JLabel("Years ");
38
JLabel rateLab = new JLabel("Rate of Return ");
39
JLabel numWDLab =
40
new JLabel("Number of Withdrawals per Year ");
41
JLabel maxWDLab = new JLabel("Maximum Withdrawal ");
42
maxWDText = new JTextField(10);
43
periodText = new JTextField(10);
44
orgPText = new JTextField(10);
45
rateText = new JTextField(10);
46
numWDText = new JTextField(10);
47
maxWDText.setEditable(false);
48
doIt = new JButton("Compute");
49
gbc.weighty = 1.0;
50
gbc.gridwidth = GridBagConstraints.REMAINDER;
51
gbc.anchor = GridBagConstraints.NORTH;
52
gbag.setConstraints(heading, gbc);
53
gbc.anchor = GridBagConstraints.EAST;
54
gbc.gridwidth = GridBagConstraints.RELATIVE;
55
gbag.setConstraints(orgPLab, gbc);
56
gbc.gridwidth = GridBagConstraints.REMAINDER;
57
gbag.setConstraints(orgPText, gbc);
58
gbc.gridwidth = GridBagConstraints.RELATIVE;
59
gbag.setConstraints(periodLab, gbc);
60
gbc.gridwidth = GridBagConstraints.REMAINDER;
61
gbag.setConstraints(periodText, gbc);
62
gbc.gridwidth = GridBagConstraints.RELATIVE;
63
gbag.setConstraints(rateLab, gbc);
64
gbc.gridwidth = GridBagConstraints.REMAINDER;
65
gbag.setConstraints(rateText, gbc);
66
gbc.gridwidth = GridBagConstraints.RELATIVE;
67
gbag.setConstraints(numWDLab, gbc);
68
gbc.gridwidth = GridBagConstraints.REMAINDER;
69
gbag.setConstraints(numWDText, gbc);
70
gbc.gridwidth = GridBagConstraints.RELATIVE;
71
gbag.setConstraints(maxWDLab, gbc);
72
gbc.gridwidth = GridBagConstraints.REMAINDER;
73
gbag.setConstraints(maxWDText, gbc);
74
gbc.anchor = GridBagConstraints.CENTER;
75
gbag.setConstraints(doIt, gbc);
76
add(heading);
77
add(orgPLab);
78
add(orgPText);
79
add(periodLab);
80
add(periodText);
81
add(rateLab);
82
add(rateText);
83
add(numWDLab);
84
add(numWDText);
85
add(maxWDLab);
86
add(maxWDText);
87
add(doIt);
88
orgPText.addActionListener(this);
89
periodText.addActionListener(this);
90
rateText.addActionListener(this);
91
numWDText.addActionListener(this);
92
doIt.addActionListener(this);
93
nf = NumberFormat.getInstance();
94
nf.setMinimumFractionDigits(2);
95
nf.setMaximumFractionDigits(2);
96
}
97
public void actionPerformed(ActionEvent ae) {
98
double result = 0.0;
99
String orgPStr = orgPText.getText();
100
String periodStr = periodText.getText();
101
String rateStr = rateText.getText();
102
String numWDStr = numWDText.getText();
103
try {
104
if(orgPStr.length() != 0 &&
105
periodStr.length() != 0 &&
106
rateStr.length() != 0 &&
107
numWDStr.length() != 0) {
108
principal = Double.parseDouble(orgPStr);
109
numYears = Double.parseDouble(periodStr);
110
rateOfRet = Double.parseDouble(rateStr) / 100;
111
numPerYear = Integer.parseInt(numWDStr);
112
result = compute();
113
maxWDText.setText(nf.format(result));
114
}
115
showStatus("");
116
} catch (NumberFormatException exc) {
117
showStatus("Invalid Data");
118
maxWDText.setText("");
119
}
120
}
121
double compute() {
122
double b, e;
123
double t1, t2;
124
t1 = rateOfRet / numPerYear;
125
b = (1 + t1);
126
e = numPerYear * numYears;
127
t2 = Math.pow(b, e) - 1;
128
return principal * (t1/t2 + t1);
129
}
130
}