本文实例为大家分享了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

Android实现房贷计算器功能的更多相关文章

  1. html5 canvas合成海报所遇问题及解决方案总结

    这篇文章主要介绍了html5 canvas合成海报所遇问题及解决方案总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  4. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  5. Ionic – Splash Screen适用于iOS,但不适用于Android

    我有一个离子应用程序,其中使用CLI命令离子资源生成的启动画面和图标iOS版本与正在渲染的启动画面完美配合,但在Android版本中,只有在加载应用程序时才会显示白屏.我检查了config.xml文件,所有路径看起来都是正确的,生成的图像出现在相应的文件夹中.(我使用了splash.psd模板来生成它们.我错过了什么?这是config.xml文件供参考,我觉得我在这里做错了–解决方法在config.xml中添加以下键:它对我有用!

  6. ios – 无法启动iPhone模拟器

    /Library/Developer/CoreSimulator/Devices/530A44CB-5978-4926-9E91-E9DBD5BFB105/data/Containers/Bundle/Application/07612A5C-659D-4C04-ACD3-D211D2830E17/ProductName.app/ProductName然后,如果您在Xcode构建设置中选择标准体系结构并再次构建和运行,则会产生以下结果:dyld:lazysymbolbindingFailed:Symbol

  7. Xamarin iOS图像在Grid内部重叠

    heyo,所以在Xamarin我有一个使用并在其中包含一对,所有这些都包含在内.这在Xamarin.Android中看起来完全没问题,但是在Xamarin.iOS中,图像与标签重叠.我不确定它的区别是什么–为什么它在Xamarin.Android中看起来不错但在iOS中它的全部都不稳定?

  8. 在iOS上向后播放HTML5视频

    我试图在iPad上反向播放HTML5视频.HTML5元素包括一个名为playbackRate的属性,它允许以更快或更慢的速率或相反的方式播放视频.根据Apple’sdocumentation,iOS不支持此属性.通过每秒多次设置currentTime属性,可以反复播放,而无需使用playbackRate.这种方法适用于桌面Safari,但似乎在iOS设备上的搜索限制为每秒1次更新–在我的情况下太慢了.有没有办法在iOS设备上向后播放HTML5视频?解决方法iOS6Safari现在支持playbackRat

  9. 使用 Swift 语言编写 Android 应用入门

    Swift标准库可以编译安卓armv7的内核,这使得可以在安卓移动设备上执行Swift语句代码。做梦,虽然Swift编译器可以胜任在安卓设备上编译Swift代码并运行。这需要的不仅仅是用Swift标准库编写一个APP,更多的是你需要一些框架来搭建你的应用用户界面,以上这些Swift标准库不能提供。简单来说,构建在安卓设备上使用的Swiftstdlib需要libiconv和libicu。通过命令行执行以下命令:gitclonegit@github.com:SwiftAndroid/libiconv-libi

  10. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Android用RecyclerView实现图标拖拽排序以及增删管理

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部