java先息后本计算每期还款金额;实现等额本息代码(80万元的30年期住房贷款,年利率为5.25%,要求算出每一期的还款的本金和利息总额)

  • 【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】
  • 【创作不易,点个赞就是对我最大的支持】

前言

仅作为学习笔记,供大家参考
总结的不错的话,记得点赞收藏关注哦!

面试遇到这么一道题:

编程题:银行贷款的还款方式中最常用的是一种叫“等额本息”,还款法,即借款人在约定还款期限内的每一期(月)归还的金额(产生的利息+部分本金)都是相等的,现有一笔总额为80万元的30年期住房贷款,年利率为5.25%,要求算出每一期的还款的本金和利息总额【请写出解决思路和任意一种编程语言实现的主要代码。】

结果:

在这里插入图片描述


话不多少上代码:

import java.util.Scanner;

/**
 * @Author: 程序员温眉
 * @Date: Created in 2020/8/22  16:40
 */
public class demo {
    public static void main(String[] args) {
        System.out.println("请输入贷款本金:");
        Scanner input=new Scanner(System.in);
            double invest = input.nextDouble();     //贷款本金
        System.out.println("请输入年利率:(例如:5.25%就是0.0525)");
            double yearRate = input.nextDouble();     //年利率
            double monthRate = yearRate/12;   //月利率
        System.out.println("请输入借款月数:(例如:30年就是360)");

            int month = input.nextInt();  //还款月数

            System.out.println("本金-->"+invest+"   年利率--->"+yearRate*100+"%"+"  期限--->"+month+"个月");
            System.out.println("--------------------------------------------");

            // 每月本息金额  = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1))
            double monthIncome = (invest* monthRate * Math.pow(1+monthRate,month))/(Math.pow(1+monthRate,month)-1);
            //四舍五入截取后两位
            String result = String.format("%.2f", monthIncome);

            System.out.println("每月本息金额 : " + result);
            System.out.println("---------------------------------------------------");

            // 每月本金 = 本金×月利率×(1+月利率)^(还款月序号-1)÷((1+月利率)^还款月数-1))
            double monthCapital = 0;
            for(int i=1;i<month+1;i++){
                monthCapital = (invest* monthRate * (Math.pow((1+monthRate),i-1)))/(Math.pow(1+monthRate,month)-1);
                //四舍五入截取后两位
                String monthCapital1 = String.format("%.2f", monthCapital);
                System.out.println("第" + i + "月本金: " + monthCapital1);
            }
            System.out.println("---------------------------------------------------");


            // 每月利息  = 剩余本金 x 贷款月利率
            double monthInterest = 0;
            double capital = invest;
            double tmpCapital = 0;
            double totalInterest = 0;
            for(int i=1;i<month+1;i++){
                capital = capital - tmpCapital;
                monthInterest = capital * monthRate;
                 tmpCapital = (invest* monthRate * (Math.pow((1+monthRate),i-1)))/(Math.pow(1+monthRate,month)-1);
            //四舍五入截取后两位
            String ssa = String.format("%.2f", monthInterest);
            System.out.println("第" + i + "月利息: " + ssa);
                totalInterest = totalInterest + monthInterest;

            }

        System.out.println("-------------------------------------------------");
        //四舍五入截取后两位
        String ss = String.format("%.2f", totalInterest);
        System.out.println("总利息:--->"+ss+" 元"); 
        System.out.println("-------------------------------------------------");
        System.out.println("年利率:--->"+yearRate*100+"%");
        System.out.println("-------------------------------------------------");
        System.out.println("借款期限 : " + month/12+" 年");
        System.out.println("-------------------------------------------------");
        System.out.println("每月还款本息金额 : " + result+" 元");
        }

        /**
         * 获取每月本息金额
         * 计算方式
         * 每月本息金额  = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1))
         * @param invest  本金
         * @param yearRate 年利率
         * @param month   还款月
         * @return  每月本息金额
         */
        public double getMonthIncome(double invest, double yearRate,int month){
            double monthRate = yearRate/12;   //月利率
            double monthIncome = (invest* monthRate * Math.pow(1+monthRate,month))/(Math.pow(1+monthRate,month)-1);
            return monthIncome;
        }
    }


创作不易,点个赞就是对我最大的支持~


wxgzh:程序员温眉

CSDN:程序员温眉

每天进步一点点的程序员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值