java編寫一個貸款計算器


https://blog.csdn.net/flueky/article/details/77099454

  房貸有兩種貸款方式:1是等額本息還款;2是等額本金還款。簡單的說就是等額本息就是每月還款額相等,比如一個月固定還款3000元,每月不變,就是這種等額本息還款的方式。另外一種就是每月還款額不等,一個月比一個月少點。但是還款初期還款額比較大,越往后還款越少。具體哪種適合自己要結合自身的情況。如果看利息的話第二種還款總利息要少於第一種。

  好了我們現在再說一下兩者還款的計算方式:

  (一)等額本息還款:

  每月還本付息=【貸款本金x月利率x(1+月利率)^還款月數】/【(1+月利率)^還款月數-1】

  每月還利息=剩余本金x貸款月利率(第一個月的本金就是貸款額,逐月遞減)

  每月還款本金=每月還款金額-每月還利息

  剩余本金=上月剩余本金-本月償還本金

  還款總利息=貸款額X貸款月數x月利率x(1+月利率)^還款月數/【(1+還款月數)^還款月數-1】-貸款總額

  注:^這個符號是次方的意思

  主要計算公式就是這樣,等額本息公式詳細推導過程並不是很難,應用高中階段的數學知識就可以完全理解清楚。

  (二)等額本金還款

  每月還本付息=(本金/還款月數)+(本金-累計已還本金)x月利率

  每月本金=總本金/還款月數

  每月利息=(本金-累計已還本金)x月利率

  還款總利息=(還款月數+1)x貸款額x月利率/2

 

java編寫一個簡易版貸款計算器

復制代碼
 1 import javax.swing.*;  2 import java.awt.*;  3 import java.awt.event.*;  4 import javax.swing.border.*;  5  6 public class LoanCalculator extends JFrame {  7 private class ButtonListener implements ActionListener {  8  @Override  9 public void actionPerformed(ActionEvent e) { 10 // TODO Auto-generated method stub 11 double interest= 12  Double.parseDouble(jtfAnnualInterestRate.getText()); 13 int year= 14  Integer.parseInt(jtfNumberOfYears.getText()); 15 double loanAmount= 16  Double.parseDouble(jtfLoanAmount.getText()); 17 18 double monthlyInterest=interest/1200; 19 double monthlyPayment= loanAmount*monthlyInterest/(1-1/Math.pow(1+monthlyInterest, 20 year*12)); 21 double totalPayment=monthlyPayment*year*12; 22 23 jtfMonthlyPayment.setText(String.format("%.2f", monthlyPayment)); 24 jtfTotalPayment.setText(String.format("%.2f", totalPayment)); 25  } 26  } 27 28 private JTextField jtfAnnualInterestRate=new JTextField(); 29 private JTextField jtfNumberOfYears=new JTextField(); 30 private JTextField jtfLoanAmount=new JTextField(); 31 private JTextField jtfMonthlyPayment=new JTextField(); 32 private JTextField jtfTotalPayment=new JTextField(); 33 34 private JButton jbtComputeLoan=new JButton("Compute Payment"); 35 36 public LoanCalculator(){ 37 JPanel p1=new JPanel(new GridLayout(5,2)); 38 p1.add(new JLabel("Annual Interest Rate")); 39  p1.add(jtfAnnualInterestRate); 40 p1.add(new JLabel("Number of Years")); 41  p1.add(jtfNumberOfYears); 42 p1.add(new JLabel("Loan Amount")); 43  p1.add(jtfLoanAmount); 44 p1.add(new JLabel("Monthly Payment")); 45  p1.add(jtfMonthlyPayment); 46 p1.add(new JLabel("Total Payment")); 47  p1.add(jtfTotalPayment); 48 p1.setBorder(new TitledBorder("Enter loan amount, interest rate," 49 + " and year")); 50 51 JPanel p2=new JPanel(new FlowLayout(FlowLayout.RIGHT)); 52  p2.add(jbtComputeLoan); 53  add(p1,BorderLayout.CENTER); 54  add(p2,BorderLayout.SOUTH); 55 jbtComputeLoan.addActionListener(new ButtonListener()); 56 57  } 58 59 public static void main(String[] args) { 60 // TODO Auto-generated method stub 61 LoanCalculator frame=new LoanCalculator(); 62 frame.setTitle("LoanCalculator"); 63  frame.pack(); 64 frame.setLocationRelativeTo(null); 65  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 66 frame.setVisible(true); 67  } 68 69 }
復制代碼

 

 

 

另一種編寫方式:

https://blog.csdn.net/flueky/article/details/77099454

:利率一律按照4.9計算。所有計算結果參照在線貸款計算公式

等額本息還款方式:每月還款本金+利息一樣。
貸款本金100萬,貸款期限30年,貸款利息91萬元(近似值),那么月供191萬元/360月。

等額本息的月供計算:

 /**
     * 計算等額本息還款
     *
     * @param principal 貸款總額
     * @param months    貸款期限
     * @param rate      貸款利率
     * @return
     */
    public static String[] calculateEqualPrincipalAndInterest(double principal, int months, double rate) {
        ArrayList<String> data = new ArrayList<String>();
        double monthRate = rate / (100 * 12);//月利率
        double preLoan = (principal * monthRate * Math.pow((1 + monthRate), months)) / (Math.pow((1 + monthRate), months) - 1);//每月還款金額
        double totalMoney = preLoan * months;//還款總額
        double interest = totalMoney - principal;//還款總利息
        data.add(FORMAT.format(totalMoney));//還款總額
        data.add(FORMAT.format(principal));//貸款總額
        data.add(FORMAT.format(interest));//還款總利息
        data.add(FORMAT.format(preLoan));//每月還款金額
        data.add(String.valueOf(months));//還款期限
        return data.toArray(new String[data.size()]);
    }
import java.text.DecimalFormat;
class FORMAT {
    public static String format(double totalMoney) {
        DecimalFormat df = new DecimalFormat("#.00");
        String str = df.format(totalMoney);
        return str;
    }
}
 
         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM