Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have the entire code written, I just can\'t seem to get right Periodic Payment

ID: 3621917 • Letter: I

Question

I have the entire code written, I just can't seem to get right Periodic Payment, and Unpaid Balance. I think it has to maybe do with the exponientials but I am not sure. Any help would be appreciated

the equations are

*Edit*: Also there appears to be a subscripted i next to the Loan Amount for periodic payment, I'm not sure whether or not that is just supposed to stand for initial or its (interest/ payments per year)

Periodic Payment = Loan Amount / 1 - (1+(Interest/Payments Per Year) ^ - Payments Per Year * Years

Unpaid Balance = Periodic Payment * (1-1(+(interest / Payments Per Year)^-(Payments Per Year * Years - Number of Payments Made) / (Interest / Payments Per Year ) )

 

 

 



import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import static java.lang.Math.*;

public class Assignment3_3 extends JFrame
{
private JLabel LoanAmountL, InterestL, PaymentsPerYearL, YearsL, PeriodicPaymentL, NumberofPaymentsL, UnpaidBalanceL;
private JTextField LoanAmountTF, InterestTF, PaymentsPerYearTF, YearsTF, PeriodicPaymentTF, NumberofPaymentsTF, UnpaidBalanceTF;
private JButton CalculateB, ExitB;
private CalculateButtonHandler cbHandler;
private ExitButtonHandler ebHandler;
private double i;


private static final int WIDTH = 500;
private static final int HEIGHT = 300;

public Assignment3_3()
{
LoanAmountL = new JLabel("Enter the Loan Amount: ",SwingConstants.RIGHT);
InterestL = new JLabel("Enter the Interest rate: ",SwingConstants.RIGHT);
PaymentsPerYearL = new JLabel("Enter the Number of Payments in a Year: ",SwingConstants.RIGHT);
YearsL = new JLabel("Enter the number of years the loan is for: ",SwingConstants.RIGHT);
PeriodicPaymentL = new JLabel("Periodic Payment: ",SwingConstants.RIGHT);
NumberofPaymentsL = new JLabel("Enter Number of Payments made: ",SwingConstants.RIGHT);
UnpaidBalanceL = new JLabel("Leftover Balance: ",SwingConstants.RIGHT);

LoanAmountTF = new JTextField(10);
InterestTF = new JTextField(10);
PaymentsPerYearTF = new JTextField(10);
YearsTF = new JTextField(10);
PeriodicPaymentTF = new JTextField(10);
NumberofPaymentsTF = new JTextField(10);
UnpaidBalanceTF = new JTextField(10);


CalculateB = new JButton("Calculate");
cbHandler = new CalculateButtonHandler();
CalculateB.addActionListener(cbHandler);

ExitB = new JButton("Exit");
ebHandler = new ExitButtonHandler();
ExitB.addActionListener(ebHandler);

setTitle("Loan Payment");

Container pane = getContentPane();

pane.setLayout(new GridLayout(8,2));

pane.add(LoanAmountL);
pane.add(LoanAmountTF);
pane.add(InterestL);
pane.add(InterestTF);
pane.add(PaymentsPerYearL);
pane.add(PaymentsPerYearTF);
pane.add(YearsL);
pane.add(YearsTF);
pane.add(NumberofPaymentsL);
pane.add(NumberofPaymentsTF);
pane.add(PeriodicPaymentL);
pane.add(PeriodicPaymentTF);
pane.add(UnpaidBalanceL);
pane.add(UnpaidBalanceTF);
pane.add(CalculateB);
pane.add(ExitB);

setSize(WIDTH,HEIGHT);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

private class CalculateButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double LoanAmount, PaymentsPerYear, Years, PeriodicPayments, NumberofPayments, UnpaidBalance;
i =(Double.parseDouble(InterestTF.getText()) / Double.parseDouble(PaymentsPerYearTF.getText()));
LoanAmount = Double.parseDouble(LoanAmountTF.getText());

PaymentsPerYear = Double.parseDouble(PaymentsPerYearTF.getText());
Years = Double.parseDouble(YearsTF.getText());
NumberofPayments = Double.parseDouble(NumberofPaymentsTF.getText());
PeriodicPayments = LoanAmount /(1-pow(1+ i,-(PaymentsPerYear*Years)));
UnpaidBalance = PeriodicPayments*(1-pow(1+ i,-(PaymentsPerYear*Years-NumberofPayments))/i);

PeriodicPaymentTF.setText("" + PeriodicPayments);
UnpaidBalanceTF.setText("" + UnpaidBalance);
}
}
private class ExitButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
Assignment3_3 LoanObject = new Assignment3_3();
}
}


Explanation / Answer

Hope this helps. Let me know if you have any questions. Please rate. :) There are definitely a few things wrong with the calculations. I believe this should be the correct form of the formulas, using i = InterestRate / PaymentsPerYear n = PaymentsPerYear * Years We then have: PeriodicPayments = LoanAmount * i / (1 - (1 + i)^-n) UnpaidBalance = PeriodicPayments * (1 - (1 + i)^-(n - NumberofPayments))) / i There were some missing/misplaced parentheses in your formulas as well. This should fix it: import javax.swing.*; import java.awt.*; import java.awt.event.*; import static java.lang.Math.*; public class Assignment3_3 extends JFrame { private JLabel LoanAmountL, InterestL, PaymentsPerYearL, YearsL, PeriodicPaymentL, NumberofPaymentsL, UnpaidBalanceL; private JTextField LoanAmountTF, InterestTF, PaymentsPerYearTF, YearsTF, PeriodicPaymentTF, NumberofPaymentsTF, UnpaidBalanceTF; private JButton CalculateB, ExitB; private CalculateButtonHandler cbHandler; private ExitButtonHandler ebHandler; private double i; private static final int WIDTH = 500; private static final int HEIGHT = 300; public Assignment3_3() { LoanAmountL = new JLabel("Enter the Loan Amount: ", SwingConstants.RIGHT); InterestL = new JLabel("Enter the Interest rate: ", SwingConstants.RIGHT); PaymentsPerYearL = new JLabel( "Enter the Number of Payments in a Year: ", SwingConstants.RIGHT); YearsL = new JLabel("Enter the number of years the loan is for: ", SwingConstants.RIGHT); PeriodicPaymentL = new JLabel("Periodic Payment: ", SwingConstants.RIGHT); NumberofPaymentsL = new JLabel("Enter Number of Payments made: ", SwingConstants.RIGHT); UnpaidBalanceL = new JLabel("Leftover Balance: ", SwingConstants.RIGHT); LoanAmountTF = new JTextField(10); InterestTF = new JTextField(10); PaymentsPerYearTF = new JTextField(10); YearsTF = new JTextField(10); PeriodicPaymentTF = new JTextField(10); NumberofPaymentsTF = new JTextField(10); UnpaidBalanceTF = new JTextField(10); CalculateB = new JButton("Calculate"); cbHandler = new CalculateButtonHandler(); CalculateB.addActionListener(cbHandler); ExitB = new JButton("Exit"); ebHandler = new ExitButtonHandler(); ExitB.addActionListener(ebHandler); setTitle("Loan Payment"); Container pane = getContentPane(); pane.setLayout(new GridLayout(8, 2)); pane.add(LoanAmountL); pane.add(LoanAmountTF); pane.add(InterestL); pane.add(InterestTF); pane.add(PaymentsPerYearL); pane.add(PaymentsPerYearTF); pane.add(YearsL); pane.add(YearsTF); pane.add(NumberofPaymentsL); pane.add(NumberofPaymentsTF); pane.add(PeriodicPaymentL); pane.add(PeriodicPaymentTF); pane.add(UnpaidBalanceL); pane.add(UnpaidBalanceTF); pane.add(CalculateB); pane.add(ExitB); setSize(WIDTH, HEIGHT); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } private class CalculateButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { double LoanAmount, PaymentsPerYear, Years, PeriodicPayments, NumberofPayments, UnpaidBalance, InterestRate; InterestRate = Double.parseDouble(InterestTF.getText()); PaymentsPerYear = Double.parseDouble(PaymentsPerYearTF.getText()); i = InterestRate / PaymentsPerYear; LoanAmount = Double.parseDouble(LoanAmountTF.getText()); Years = Double.parseDouble(YearsTF.getText()); NumberofPayments = Double.parseDouble(NumberofPaymentsTF.getText()); double n = PaymentsPerYear * Years; PeriodicPayments = LoanAmount * i / (1 - pow(1 + i, -n)); UnpaidBalance = PeriodicPayments * (1 - pow(1 + i, -(n - NumberofPayments))) / i; PeriodicPaymentTF.setText("" + PeriodicPayments); UnpaidBalanceTF.setText("" + UnpaidBalance); } } private class ExitButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); } } public static void main(String[] args) { Assignment3_3 LoanObject = new Assignment3_3(); } }