JAVA 简单的货款计算器
以次输入输入年利率(annul interest rate),年数(number of year),货款金额(loan amont),会给你算出每月要付得款数(monthly payment)以及总款数(toutal payment)。
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import java.util.Date;
public class loancaculate extends Application {
private TextField tfannuainteresetrate = new TextField();
private TextField tfnumberofyear = new TextField();
private TextField tfloanamount = new TextField();
private TextField tfmonthlypayment = new TextField();
private TextField tftotalpayment = new TextField();
private Button btcalculate = new Button("calculate");
public void start(Stage primarystage){
GridPane gridPane = new GridPane();
gridPane.setHgap(5);
gridPane.setVgap(5);
// add node child and create UI
gridPane.add(new Label("Annual Interest Rate:"), 0,0);
gridPane.add(tfannuainteresetrate,1,0);
gridPane.add(new Label("Number Of The Yaer:"),0,1);
gridPane.add(tfnumberofyear,1,1);
gridPane.add(new Label("Loan Amunt:"),0,2);
gridPane.add(tfloanamount,1,2);
gridPane.add(new Label("Monthly Payment:"),0,3);
gridPane.add(tfmonthlypayment,1,3);
gridPane.add(new Label("Total Payment:"),0,4);
gridPane.add(tftotalpayment,1,4);
gridPane.add(btcalculate,1,5);
// set properties UI
gridPane.setAlignment(Pos.CENTER);
tfannuainteresetrate.setAlignment(Pos.BOTTOM_RIGHT);
tfnumberofyear.setAlignment(Pos.BOTTOM_RIGHT);
tfloanamount.setAlignment(Pos.BOTTOM_RIGHT);
tfmonthlypayment.setAlignment(Pos.BOTTOM_RIGHT);
tftotalpayment.setAlignment(Pos.BOTTOM_RIGHT);
tfmonthlypayment.setEditable(false);
tftotalpayment.setEditable(false);
GridPane.setHalignment(btcalculate, HPos.RIGHT);
// process event
btcalculate.setOnAction(event -> calculateloanpayment());
// create a scene in the stage
Scene scene = new Scene(gridPane,600,400);
primarystage.setTitle("LoanCalculater");
primarystage.setScene(scene);
primarystage.show();
}
public void calculateloanpayment(){
double interest= Double.parseDouble(tfannuainteresetrate.getText());
int year = Integer.parseInt(tfnumberofyear.getText());
double loanamount = Double.parseDouble(tfloanamount.getText());
// create a loan object
Loan loan = new Loan(interest,year,loanamount);
tfmonthlypayment.setText(String.format("$%.4f",loan.getmonthlypayment()));
tftotalpayment.setText(String.format("$%.4f",loan.gettotalpayment()));
}
}
class Loan{
private double annualinterestrate;
private int nnumberofyear;
private double loanamunt;
private java.util.Date loandate;
// default constructer
public Loan(){
this(2.5, 1, 1000);
}
public Loan(double annualinterestrate, int nnumberofyear, double loanamunt) {
this.annualinterestrate = annualinterestrate;
this.nnumberofyear = nnumberofyear;
this.loanamunt = loanamunt;
loandate = new java.util.Date();
}
public double getAnnualinterestrate() {
return annualinterestrate;
}
public void setAnnualinterestrate(double annualinterestrate) {
this.annualinterestrate = annualinterestrate;
}
public int getNnumberofyear() {
return nnumberofyear;
}
public void setNnumberofyear(int nnumberofyear) {
this.nnumberofyear = nnumberofyear;
}
public double getLoanamunt() {
return loanamunt;
}
public void setLoanamunt(double loanamunt) {
this.loanamunt = loanamunt;
}
public Date getLoandate() {
return loandate;
}
public void setLoandate(Date loandate) {
this.loandate = loandate;
}
public double getmonthlypayment(){
double monthlyinterestrate = annualinterestrate / 1200;
return loanamunt * monthlyinterestrate / (1 - (1 / Math.pow(1 + monthlyinterestrate, nnumberofyear * 12)));
}
public double gettotalpayment(){
return getmonthlypayment() * nnumberofyear * 12;
}
public java.util.Date getloandata(){
return loandate;
}
}
效果图