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 widgets
	TextField cashText, costText, lengthText, yRateText, taxText;
	Button goButton;
	TextArea outText;
	
	// program variables
	float cost, cash, yRate, taxRate;
	int term;
	float tax, amount, downPayment, M, monthlyPayment, totalCost;
	
	public void init() {
		makeGui();
	} // init
	
	private void compute() {
		// compute sales tax (set salesString+tax)
		tax = cost * taxRate/100;
		
		// compute downpayment (downString)
		downPayment = cash - tax;
		
		// compute amount financed (amountString)
		amount = cost - downPayment;
	
		// compute monthly interest rate
		M = yRate/12/100;
		
		// compute monthly payment (monthlyString)
		monthlyPayment = (float) ((amount * M)/(1 - Math.exp(-term*Math.log(1+M))));
		
		// compute total cost (totalString)
		totalCost = tax + downPayment + term * monthlyPayment;
		
	} // compute
	
	public void paint( Graphics g ) {
		outText.appendText("Cost = $" + cost + "\n");
		outText.appendText("Cash = $" + cash + "\n");
		outText.appendText("Loan term (months)" + term + "\n");
		outText.appendText("Yearly rate (%) " + yRate + "\n");
		outText.appendText("Sales Tax (%) " + taxRate + "\n");
		
		// Output results
		outText.appendText("Sales Tax = $" + tax + "\n");
		outText.appendText("Down Payment = $" + downPayment + "\n");
		outText.appendText("Amount Financed = $" + amount + "\n");
		outText.appendText("Monthly Payment = $" + monthlyPayment + "\n");
		outText.appendText("Total Cost of car = $" + totalCost + "\n\n\n\n");
	} // paint
	
	private float readValue(TextField t) {
		String s;
		Float f;
		
		// get string from text field
		s = t.getText();
		
		// convert it to Float object
		f = new Float(s);
		
		// convert it to float value
		return f.floatValue();
		
	} // readValue
	
	private void processInput() { // reads float values from text fields
		cost = readValue(costText);
		cash = readValue(cashText);
		term = (int) readValue(lengthText);
		yRate = readValue(yRateText);
		taxRate = readValue(taxText);
	} // processInput
	
	public void actionPerformed(ActionEvent e) {
	
		if (e.getSource() == goButton) {
			processInput();
			compute();
			repaint();
		}
	} // actionPerformed
	
	private void makeGui() {
		Panel allPanel;
		
		// applet layout
			setLayout(new BorderLayout());
			
		// panel to hold all input elements
		allPanel = new Panel();
		allPanel.setLayout(new GridLayout(6,1));
		
		// cost
			costText = new TextField(10);
			makeWidget("Cost of car", costText, allPanel);
			
		// cash
			cashText = new TextField(10);
			makeWidget("Cash in hand", cashText, allPanel);
		
		// length
			lengthText = new TextField(10);
			makeWidget("Length of loan (months)", lengthText, allPanel);
		
		// yearly rate
			yRateText = new TextField(10);
			makeWidget("Yearly Interest Rate (%)", yRateText, allPanel);
		
		// sales tax
			taxText = new TextField(10);
			makeWidget("Sales Tax Rate (%)", taxText, allPanel);
			
		// go button
		goButton = new Button("Calculate");
		Panel bP = new Panel();
		bP.add(goButton);
		allPanel.add(bP);
		goButton.addActionListener(this);
		
		// add all panel to applet
		
		add("West", allPanel);
		
		// Output area
		outText = new TextArea("Output\n\n", 20, 40, TextArea.SCROLLBARS_BOTH);
		outText.setBackground(new Color(255, 153, 0));
		add("Center", outText);
		
	} // makeGui
	
	private void makeWidget(String lstring, TextField text, Panel all) {
		Label l;
		Panel p = new Panel();
		
		l = new Label(lstring);
		//text = new TextField(10);
		p.setLayout(new FlowLayout(FlowLayout.RIGHT));
		p.add(l);
		p.add(text);
		all.add(p);
	
	} // makeWigdet
} // carloan