网站首页 编程语言 正文
本文实例为大家分享了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
相关推荐
- 2022-02-26 Assert.assertEquals()方法参数详解_Android
- 2022-12-01 Go初学者踩坑之go mod init与自定义包的使用_Golang
- 2022-06-22 Git文件常用操作总结及拓展_其它综合
- 2022-08-13 Redis - String内存开销问题以及基本/扩展数据类型的使用
- 2022-05-11 mac ssh 免密登录 localhost
- 2023-12-16 IDEA中设置远程调试服务器上的程序
- 2022-06-19 微信小程序前端如何调用python后端的模型详解_python
- 2022-02-16 Uncaught RangeError: Maximum call stack size excee
- 最近更新
-
- 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同步修改后的远程分支