Android房贷计算器功能
Atomic_space 人气:0package com.atomic.moretool; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MortgageCal extends AppCompatActivity { private EditText allLoan,yearInterestRate,loanYear; private Button calLoan; private ListView ShowDebx,ShowDebj; private TextView debxTotalInterest; private TextView debjTotalInterest; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mortgagecal); findCompent(); calLoan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showDebx(); showDebj(); } }); } private void showDebx(){ SimpleAdapter simpleAdapter=new SimpleAdapter(this,cal_debx(),R.layout.show_debx, new String[]{"debxmonth","debxmonthloan","debxmonthprincipal","debxmonthinterest"}, new int[]{R.id.debx_month,R.id.listview_debx_month_loan,R.id.listview_debx_month_principal,R.id.listview_debx_month_interest}); ShowDebx.setAdapter(simpleAdapter); } private void showDebj(){ SimpleAdapter simpleAdapter=new SimpleAdapter(this,cal_debj(),R.layout.show_debj, new String[]{"debjmonth","debjmonthloan","debjmonthprincipal","debjmonthinterest","debjmonthdecrease"}, new int[]{R.id.debj_month,R.id.listview_debj_month_loan,R.id.listview_debj_month_principal,R.id.listview_debj_month_interest,R.id.listview_debj_month_decrease}); ShowDebj.setAdapter(simpleAdapter); } private void findCompent() { allLoan=findViewById(R.id.all_loan); yearInterestRate=findViewById(R.id.year_interest_rate); loanYear=findViewById(R.id.loan_year); allLoan.setSelectAllOnFocus(true); yearInterestRate.setSelectAllOnFocus(true); loanYear.setSelectAllOnFocus(true); calLoan=findViewById(R.id.cal_loan); ShowDebx=findViewById(R.id.show_debx); ShowDebj=findViewById(R.id.show_debj); debxTotalInterest=findViewById(R.id.debx_total_interest); debjTotalInterest=findViewById(R.id.debj_total_interest); } private List<Map<String,Object>> cal_debx(){ /* <!--等额本息--> 每月还款总额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1] 每月应还本金=贷款本金×月利率×(1+月利率)^(还款月序号-1)÷〔(1+月利率)^还款月数-1〕 每月应还利息=贷款本金×月利率×〔(1+月利率)^还款月数-(1+月利率)^(还款月序号-1)〕÷〔(1+月利率)^还款月数-1〕 总利息=还款月数×每月还款总额-贷款本金 */ String AllLoan=allLoan.getText().toString().trim();//贷款多少 String YearInterestRate=yearInterestRate.getText().toString().trim();//年利率 String LoanYear=loanYear.getText().toString().trim();//贷款年数 if (!AllLoan.equals("") && !YearInterestRate.equals("") && !LoanYear.equals("")){ double allloan=Double.parseDouble(AllLoan);//贷款多少 double yearinterestrate=Double.parseDouble(YearInterestRate);//年利率 double monthinterestrate=yearinterestrate/12;//月利率 double loanyear=Double.parseDouble(LoanYear);//贷款年数 double loanmonth=loanyear*12;//还款月数 //......需要设置还款月序号 //......需要已归还本金累计额 //......需要剩余本金 List<Map<String,Object>> debx_list=new ArrayList<>(); for (int i=1;i<=(int)loanmonth;i++){ Map<String,Object> map=new HashMap<>(); // <!--等额本息--> //每月还款总额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1] double DebxMonthLoan=new BigDecimal(allloan*monthinterestrate*Math.pow((1+monthinterestrate),loanmonth)/(Math.pow((1+monthinterestrate),loanmonth)-1)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); //每月应还本金=贷款本金×月利率×(1+月利率)^(还款月序号-1)÷〔(1+月利率)^还款月数-1〕 double DebxMonthPrincipal=new BigDecimal(allloan*monthinterestrate*Math.pow((1+monthinterestrate),(i-1))/(Math.pow((1+monthinterestrate),loanmonth)-1)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); //每月应还利息=贷款本金×月利率×〔(1+月利率)^还款月数-(1+月利率)^(还款月序号-1)〕÷〔(1+月利率)^还款月数-1〕 double DebxMonthInterest=new BigDecimal(allloan*monthinterestrate*((Math.pow((1+monthinterestrate),loanmonth))-Math.pow((1+monthinterestrate),(i-1)))/(Math.pow((1+monthinterestrate),loanmonth)-1)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); map.put("debxmonth",String.valueOf(i)+"月"); map.put("debxmonthloan",String.valueOf(DebxMonthLoan)); map.put("debxmonthprincipal",String.valueOf(DebxMonthPrincipal)); map.put("debxmonthinterest",String.valueOf(DebxMonthInterest)); debx_list.add(map); } //每月还款总额 double DebxMonthLoan=new BigDecimal(allloan*monthinterestrate*Math.pow((1+monthinterestrate),loanmonth)/(Math.pow((1+monthinterestrate),loanmonth)-1)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); //总利息=还款月数×每月还款总额-贷款本金 double DebxInterest=new BigDecimal(loanmonth*DebxMonthLoan-allloan).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); debxTotalInterest.setText(String.valueOf(DebxInterest)); return debx_list; }else{ Toast.makeText(this, "先输入与选择内容", Toast.LENGTH_SHORT).show(); } return null; } private List<Map<String,Object>> cal_debj() { /* <!--等额本金--> 每月还款总额=(贷款本金÷还款月数)+(贷款本金-已归还本金累计额)×月利率 每月应还本金=贷款本金÷还款月数 每月应还利息=剩余本金×月利率=(贷款本金-已归还本金累计额)×月利率。 每月月供递减额=每月应还本金×月利率=贷款本金÷还款月数×月利率 总利息=还款月数×(总贷款额×月利率-月利率×(总贷款额÷还款月数)*(还款月数-1)÷2+总贷款额÷还款月数) */ String AllLoan = allLoan.getText().toString().trim();//贷款多少 String YearInterestRate = yearInterestRate.getText().toString().trim();//年利率 String LoanYear = loanYear.getText().toString().trim();//贷款年数 if (!AllLoan.equals("") && !YearInterestRate.equals("") && !LoanYear.equals("")) { double allloan = Double.parseDouble(AllLoan);//贷款多少 double yearinterestrate = Double.parseDouble(YearInterestRate);//年利率 double monthinterestrate = yearinterestrate / 12;//月利率 double loanyear = Double.parseDouble(LoanYear);//贷款年数 double loanmonth = loanyear * 12;//还款月数 //......需要已归还本金累计额 //......需要剩余本金 List<Map<String, Object>> debj_list = new ArrayList<>(); for (int i = 1; i <= (int) loanmonth; i++) { Map<String, Object> map = new HashMap<>(); // <!--等额本金--> //每月应还本金=贷款本金÷还款月数 double DebjMonthPrincipal = new BigDecimal(allloan / loanmonth).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //每月还款总额=(贷款本金÷还款月数)+(贷款本金-累计已还款本金)×月利率 double DebjMonthLoan = new BigDecimal((allloan / loanmonth) + (allloan - DebjMonthPrincipal*i) * monthinterestrate).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //每月应还利息=剩余本金×月利率=(贷款本金-累计已还款本金)×月利率。 double DebjMonthInterest = new BigDecimal((allloan-DebjMonthPrincipal*i) * monthinterestrate).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); //每月月供递减额=每月应还本金×月利率=贷款本金÷还款月数×月利率 double DebjMonthDecrease = new BigDecimal(DebjMonthPrincipal * monthinterestrate).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); map.put("debjmonth",String.valueOf(i)+"月"); map.put("debjmonthloan",String.valueOf(DebjMonthLoan)); map.put("debjmonthprincipal",String.valueOf(DebjMonthPrincipal)); map.put("debjmonthinterest",String.valueOf(DebjMonthInterest)); map.put("debjmonthdecrease",String.valueOf(DebjMonthDecrease)); debj_list.add(map); } //总利息=还款月数×(总贷款额×月利率-月利率×(总贷款额÷还款月数)*(还款月数-1)÷2+总贷款额÷还款月数) double DebjInterest = new BigDecimal(((allloan/loanmonth+allloan*monthinterestrate)+allloan/loanmonth*(1+monthinterestrate))/2*loanmonth-allloan).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); debjTotalInterest.setText(String.valueOf(DebjInterest)); return debj_list; } else { Toast.makeText(this, "先输入与选择内容", Toast.LENGTH_SHORT).show(); } return null; } }
xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_margin="15sp" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_marginBottom="15sp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:text="贷款年数" android:textSize="14sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:text="20" android:inputType="number" android:layout_weight="1" android:id="@+id/loan_year" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:text="年利率" android:textSize="14sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:text="0.0635" android:inputType="number" android:layout_weight="1" android:id="@+id/year_interest_rate" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:gravity="center|left" android:layout_marginBottom="10sp" android:layout_width="match_parent" android:layout_height="wrap_content" tools:ignore="RtlHardcoded"> <TextView android:text="贷款多少" android:textSize="14sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:inputType="number" android:layout_marginEnd="10sp" android:text="180000" android:id="@+id/all_loan" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content"/> <Button android:background="@drawable/button_style" android:id="@+id/cal_loan" android:text="计算" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:layout_marginBottom="5sp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_marginEnd="10sp" android:text="[等额本息]" android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:text="总利息: " android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/debx_total_interest" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_weight="1" android:text="每月总还款" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_weight="1" android:text="每月还本金" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_weight="1" android:text="每月还利息" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <ListView android:layout_weight="1" android:id="@+id/show_debx" android:layout_width="match_parent" android:layout_height="wrap_content"/> <LinearLayout android:layout_marginTop="15sp" android:layout_marginBottom="5sp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_marginEnd="15sp" android:text="[等额本金]" android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:text="总利息:" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/debj_total_interest" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_weight="1" android:text="月总还款" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_weight="1" android:text="月还本金" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_weight="1" android:text="月还利息" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_weight="1" android:text="月供递减" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <ListView android:layout_weight="1" android:id="@+id/show_debj" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
加载全部内容