November 3, 2003

The Car Loan Calculator

 



/*
Car Loan Calculator
*/
import java.awt.*;
     import java.applet.Applet;
     import java.awt.event.*;
public class CarLoan extends Applet implements ActionListener
{
   // GUI variables
   Panel allPanel;
   TextField costText, cashText, termText, yRateText, sTaxText;
   Button calcButton;
   TextArea outText;
   
   // Program variables
   float cost, cash, yRate, sTax;
   int term;
   float monthlyPayment, amount, mRate, taxPaid, downPayment;
   float totalCost;
   
   public void init() {
      makeGUI();
   } // init
   
   public void paint(Graphics g) {
      // print out results in outText text area
      outText.appendText("Cost of car $"+cost+"\n");
      outText.appendText("Cash in hand $"+cash+"\n");
      outText.appendText("Term of loan "+term+" months.\n");
      outText.appendText("Yearly interest rate is "+yRate+"%\n");
      outText.appendText("Sales Tax is "+sTax+"%\n");
      outText.appendText("Sales Tax paid is $"+taxPaid+"\n");
      outText.appendText("Down payment is $"+downPayment+"\n");
      outText.appendText("Amount financed is $"+amount+"\n");
      outText.appendText("Monthly payment will be $"+monthlyPayment+"\n");
      outText.appendText("Total cost will be $"+totalCost+"\n\n\n");
   } // paint
   
   void compute() {	// do computations
   
      // Compute monthly rate
      mRate = (yRate/12.0f)/100.0f;
   
      // compute amount of loan
      // compute sales tax paid
      taxPaid = cost * sTax/100.0f;
   
      // compute down payment
      downPayment = cash - taxPaid;
   
      // compute amount financed
      amount = cost - downPayment;
   
      // compute monthly payment
      monthlyPayment = (float)((amount * mRate)/(1 - Math.exp(-1.0f*term*Math.log(1.0f+mRate))));
   
      // compute total cost of car
      totalCost = cash + term*monthlyPayment;
   } // compute
   
   public void actionPerformed(ActionEvent e) {
   
      System.out.println("Button pressed.");
   
      // read all values from the applet
      cost = readValue(costText);
      cash = readValue(cashText);
      term =(int) readValue(termText);
      yRate = readValue(yRateText);
      sTax = readValue(sTaxText);
   
      // do computations
      compute();
   
      repaint();
   } // actionPerformed
   
   float readValue(TextField t) {
   // read a value from the text field, t and convert it to float
   
   float v;
   Float F;
   String s;
   
   // get string from t
   s = t.getText();
   
   // make it into a Float (wrapper)
   F = new Float(s);
   
   // convert it to a numerical (float) value
   v = F.floatValue();
   
   return v;
   } // readValue
   
   public void makeWidget(TextField t, String s, Panel all) {
   
   Label l = new Label(s);
   
   Panel p = new Panel();
   
   p.setLayout(new FlowLayout(FlowLayout.RIGHT));
   
   p.add(l);
   p.add(t);
   
   all.add(p);
   
   } // makeWidget
   
   
   public void makeGUI() {
   
   Panel bPanel;
   
   // set applet layout
   setLayout(new BorderLayout());
   
   // create the all-panel containing data entry fields
   allPanel = new Panel();
   allPanel.setLayout(new GridLayout(6, 1));
   
   // Create and add Cost widget
   costText = new TextField(10);
   makeWidget(costText, "Cost of car: $", allPanel);
   
   // Create and add Cash widget
   cashText = new TextField(10);
   makeWidget(cashText, "Cash in hand: $", allPanel);
   
   // Create and add Term widget
   termText = new TextField(10);
   makeWidget(termText, "Loan Term(months):", allPanel);
   
   // Create and add Yearly rate widget
   yRateText = new TextField(10);
   makeWidget(yRateText, "Yearly Interest Rate (%):", allPanel);
   
   // Create and add Sales Tax widget
   sTaxText = new TextField(10);
   makeWidget(sTaxText, "Sales Tax (%):", allPanel);
   
   
   // create and add the calcButton
   calcButton = new Button("Calculate");
   bPanel = new Panel();
   bPanel.add(calcButton);
   allPanel.add(bPanel);
   
   // add the allPanel to applet
   add("West", allPanel);
 // create and add the text area
   outText = new TextArea("Output\n\n", 20, 40, TextArea.SCROLLBARS_BOTH);
   outText.setBackground(Color.yellow);
   add("Center", outText);
   
   // define listener
   calcButton.addActionListener(this);
   
   } // makeGUI
   
   } // CarLoan
     
Back to CS110 Examples