網站首頁 編程語言 正文
本文實例為大家分享了Android實現房貸計算器的具體代碼,供大家參考,具體內容如下
package 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>
原文鏈接:https://blog.csdn.net/qq_34526228/article/details/122430480
相關推薦
- 2023-03-28 react-redux的connect示例詳解_React
- 2023-02-07 C語言可變參數與內存管理超詳細講解_C 語言
- 2022-03-30 C語言入門之淺談數據類型和變量常量_C 語言
- 2023-05-24 Pytorch中retain_graph的坑及解決_python
- 2022-06-28 python神經網絡使用tensorflow實現自編碼Autoencoder_python
- 2022-02-22 記一個nginx錯誤directory index of “/var/www/xxxx/“ is f
- 2023-06-04 Pandas.DataFrame重置Series的索引index(reset_index)_pyth
- 2023-06-05 Go實現共享庫的方法_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支