我正在尝试对我的"计算"按钮进行编码,以按年份将未来值输出到列表模型中。我需要"修改计算按钮的 actionPerforming 事件,以便它不是计算单个值,而是计算每年的未来值,直到通过组合框选择的年份,并将一个显示每年计算的字符串添加到列表中。现在它运行良好,但跳过第一年并将第二年输出为 0$。
private void calculateButtonActionPerformed(java.awt.event.ActionEvent evt) {
if (isValidData())
{
double p = Double.parseDouble(monthlyPaymentTextField.getText());
double r = Double.parseDouble(yearlyRateTextField.getText());
int y = numberofyears.getSelectedIndex();
NumberFormat currency = NumberFormat.getCurrencyInstance();
DefaultListModel alm = new DefaultListModel();
jList1.setModel(alm);
for(int i = 0; i < y; i++)
{
double fv = FinancialCalculations.calculateFutureValue(p, r, i);
alm.addElement(currency.format(fv));
}
}
}
以下是财务计算代码,如果它有帮助的话:
package murach.business;
public class FinancialCalculations
{
public static final int MONTHS_IN_YEAR = 12;
public static double calculateFutureValue(double monthlyPayment,
double yearlyInterestRate, int years)
{
int months = years * MONTHS_IN_YEAR;
double monthlyInterestRate = yearlyInterestRate/MONTHS_IN_YEAR/100;
double futureValue = 0;
for (int i = 1; i <= months; i++)
{
futureValue = (futureValue + monthlyPayment) *
(1 + monthlyInterestRate);
}
return futureValue;
}
}
你需要将 DefaultListModel 分配给一个变量,然后在变量上使用 jList1.setModel。在计算函数中,更新 DefaultListModel 变量而不是 jList1。
所以像这样:
DefaultListModel alm = new DefaultListModel(...);
jList1.setModel(alm);
alm.addElement(...);