【JAVA语言程序设计基础篇】--事件驱动程序设计--贷款计算器


输入年份 利率 总金额 ,计算出总还款数 每月还款数


package chapter16;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;//
import javax.swing.border.TitledBorder;

@SuppressWarnings("serial")
public class LoanCalculator extends JFrame{
	private JTextField AnnualInterestRate = new JTextField();
	private JTextField numberOfYears = new JTextField();
	private JTextField LoanAmount = new JTextField();
	private JTextField MonthlyPayment = new JTextField();
	private JTextField TotalPayment = new JTextField();
	public LoanCalculator(){
		
		JPanel p1 = new JPanel();
		p1.setLayout(new GridLayout(5,2));
		p1.add(new JLabel("annual interest rate"));
		p1.add(AnnualInterestRate);
		p1.add(new JLabel("number of years"));
		p1.add(numberOfYears);
		p1.add(new JLabel("loan amount"));
		p1.add(LoanAmount);
		p1.add(new JLabel("monthly payment"));
		p1.add(MonthlyPayment);
		p1.add(new JLabel("totalpayment"));
		p1.add(TotalPayment);
		p1.setBorder(new TitledBorder("enter loan amount,interest rate,and year"));
		
		
		JPanel p2 = new JPanel();
		p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
		JButton button = new JButton("computer payment");
		p2.add(button,BorderLayout.SOUTH);
		
		add(p1,BorderLayout.CENTER);//需要在这里加入方位
		add(p2,BorderLayout.SOUTH);
		
		button.addActionListener(new buttonListener());
		
	}
	public static void main(String[] args) {
		JFrame frame = new LoanCalculator();
		frame.setTitle("loancalculator");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		frame.pack();
		frame.setSize(300, 300);
	}
	 class buttonListener implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			
			double interest = Double.parseDouble(AnnualInterestRate.getText());
			double loanamount = Double.parseDouble(LoanAmount.getText());
			int year = Integer.parseInt(numberOfYears.getText());
			
			Loan loan = new Loan(interest,year,loanamount);
			
			MonthlyPayment.setText(String.format("%.2f", loan.getMonthlyPayment()));//why is no useful in Line 61??
			TotalPayment.setText(String.format("%.2f", loan.getTotalPayment()));
			
		}
	}
}

class Loan {
	  private double annualInterestRate;
	  private int numberOfYears;
	  private double loanAmount;
	  private java.util.Date loanDate;

	  /** Default constructor */
	  public Loan() {
	    this(2.5, 1, 1000);
	  }

	  /** Construct a loan with specified annual interest rate,
	      number of years and loan amount 
	    */
	  public Loan(double annualInterestRate, int numberOfYears,
	      double loanAmount) {
	    this.annualInterestRate = annualInterestRate;
	    this.numberOfYears = numberOfYears;
	    this.loanAmount = loanAmount;
	    loanDate = new java.util.Date();
	  }

	  /** Return annualInterestRate */
	  public double getAnnualInterestRate() {
	    return annualInterestRate;
	  }

	  /** Set a new annualInterestRate */
	  public void setAnnualInterestRate(double annualInterestRate) {
	    this.annualInterestRate = annualInterestRate;
	  }

	  /** Return numberOfYears */
	  public int getNumberOfYears() {
	    return numberOfYears;
	  }

	  /** Set a new numberOfYears */
	  public void setNumberOfYears(int numberOfYears) {
	    this.numberOfYears = numberOfYears;
	  }

	  /** Return loanAmount */
	  public double getLoanAmount() {
	    return loanAmount;
	  }

	  /** Set a newloanAmount */
	  public void setLoanAmount(double loanAmount) {
	    this.loanAmount = loanAmount;
	  }

	  /** Find monthly payment */
	  public double getMonthlyPayment() {
	    double monthlyInterestRate = annualInterestRate / 1200;
	    double monthlyPayment = loanAmount * monthlyInterestRate / (1 -
	      (Math.pow(1 / (1 + monthlyInterestRate), numberOfYears * 12)));
	    return monthlyPayment;    
	  }

	  /** Find total payment */
	  public double getTotalPayment() {
	    double totalPayment = getMonthlyPayment() * numberOfYears * 12;
	    return totalPayment;    
	  }

	  /** Return loan date */
	  public java.util.Date getLoanDate() {
	    return loanDate;
	  }
}





点击computer payment生成数据 




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值