JAVA 简单的货款计算器

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;
    }
}

效果图
效果图

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值