房贷提前一次性付清的结果比较

package annotation.test; import javax.swing.JOptionPane; public class FangDaiJiSuanQi { private double lilv; // 贷款利率  private double benjin; // 贷款额度,单位 万  private int nian; // 还款年限  private double yuehuankuan; // 每月还款  private double zonge; // 还款总额  private double yuehuankuan_benjin; // 每月还款的本金  private double yuehuankuan_lixi; // 每月还款的利息  private double yuejianshao ; // 等额本金方式月减少的还款额  private double lessbenjin; // 尚未归还的本金   public FangDaiJiSuanQi(double lilv , double benjin , int nian ){ this.lilv = lilv; this.benjin = benjin; this.nian = nian;
    } public static void main (String[] args) { // 商贷利率 5.4 , 贷款 30 万, 准备贷款 20  FangDaiJiSuanQi fd = new FangDaiJiSuanQi(5.4, 30.0, 20); // 第一种用法: 等额本金的计算  //        for(int i = 0 ; i < fd.nian * 12 ; i++) { //            fd.dengebenjin(fd.lilv, fd.benjin, fd.nian, i+1); //            System.out.println(" " + (i + 1) + " 个月*************"); //            System.out.print(" 月还款额:" + fd.yuehuankuan); //            System.out.print(" 月还款额本金:" + fd.yuehuankuan_benjin); //            System.out.print(" 月还款额利息:" + fd.yuehuankuan_lixi); //            System.out.print(" 月还款额减少:" + fd.yuejianshao); //            System.out.println(); //        }  // 计算还款的总数 1 是等额本息 2 是等额本金 //        fd.countZongE(fd.lilv, fd.benjin, fd.nian, "2"); //        System.out.println("总额: "+fd.zonge); // // 第二种用法  // 等额本息的计算  //        for(int i = 0 ; i < fd.nian * 12 ; i++) { //            fd.dengebenxi(fd.lilv, fd.benjin, fd.nian, i + 1); //            System.out.println(" " + (i + 1) + " 个月*************"); //            System.out.print(" 月还款额:" + fd.yuehuankuan); //            System.out.print(" 月还款额本金:" + fd.yuehuankuan_benjin); //            System.out.print(" 月还款额利息:" + fd.yuehuankuan_lixi); //            System.out.println(); //        } // // 计算还款的总数 1 是等额本息 2 是等额本金 //        fd.countZongE(fd.lilv, fd.benjin, fd.nian, "1"); //        System.out.println("总额: "+fd.zonge);  // 第三种用法   计划贷款 11 - 20 年之间 , 计划在第 5 - 8 年之间提前一次性付清 //        fd.bijiao(fd,11,20,5,8);   } // 等额本金的计算方式,计算值 。 需输入 利率、本金、 贷款年份、 需计算的月份, 未归还本金为截止本月之前的统计,不包括本月  public void dengebenjin(double lilv, double benjin, int nian, int yuefen){

        benjin = benjin * 10000 ; yuehuankuan_benjin = benjin / ( nian * 12 )  ; // 月还款中的本金部分  double yihuankuanedu = yuehuankuan_benjin * (yuefen - 1); // 计算已还款的本金  yuehuankuan_lixi = ( benjin - yihuankuanedu ) * ( lilv/100/12 ); // 月还款中的利息部分  yuejianshao = yuehuankuan_benjin * ( lilv/100/12 ); // 每月减少的额度  yuehuankuan = yuehuankuan_benjin + yuehuankuan_lixi ; // 月还款  lessbenjin = benjin - yuehuankuan_benjin * (yuefen - 1); // 尚未归还本金  } // 计算还款的总数 1 是等额本息 2 是等额本金  public void countZongE(double lilv, double benjin, int nian, String type){ double zonge = 0; if ( "1".equals(type) ){ for(int i = 0 ; i < nian * 12 ; i++) {
                dengebenxi(lilv, benjin, nian,  i + 1);
                zonge += yuehuankuan;
            }
        }else{ // 等额本金  for(int i = 0 ; i < nian * 12 ; i++) {
                dengebenjin( lilv,  benjin,  nian,  i + 1);
                zonge += yuehuankuan;
            }
        } this.zonge = zonge ;
    } // 等额本息,计算每个月的还款额度  public void dengebenxi(double lilv, double benjin, int nian, int yuefen){ double yuelilv = lilv /100/ 12; // 月利率  benjin = benjin * 10000; // 本金  yuehuankuan = ( benjin * yuelilv * Math.pow((1+yuelilv), nian * 12) ) / (Math.pow(1+yuelilv, nian * 12) -1 ) ; yuehuankuan_lixi =  (benjin * yuelilv - yuehuankuan) * Math.pow(1+yuelilv, yuefen - 1)  + yuehuankuan; yuehuankuan_benjin = yuehuankuan - yuehuankuan_lixi ;
    } /**  *  * 推荐还款的比较方式  * fd 记录了本机借贷的信息,其中借贷年数以 minian maxnian 为准,除非 这两个字段为空  * minHuan 为还款的起始年数  * maxHuan 为最终的还款年数  *  * 本方法实现的是提前一次性付清,那么在什么样的时间点一次性付清是最有利的。也就是还款总数最少的。建议把结构放在excel中,看起来会更方便。  */   public void bijiao(FangDaiJiSuanQi fd, int minian , int maxnian, int minHuan, int maxHuan){ // 借贷年数  int nian = fd.nian; if(minian == 0 || maxnian == 0){
            minian = fd.nian ;
            maxnian = fd.nian ;
        } // 还款的月份  if(minHuan == 0 || maxHuan == 0){
            minHuan = 1;
            maxHuan = maxnian * 12;
        } int minHuanYue , maxHuanYue = 0;

        minHuanYue = (minHuan-1) * 12 + 1;
        maxHuanYue = maxHuan * 12; double yiHuanBenJin = 0; double yiHuanLiXi = 0; double yiHuanZongE = 0; double shengYuBenJi = 0; double yiCiXing = 0; // 计算等额本息  for( int year = minian ; year <= maxnian ; year ++ ){
            System.out.println("借贷年限为:"+year+"年!\t"+"借贷"+fd.benjin+"万元");
            System.out.println("提前还款年份\t"+"月份\t"+"还款方式\t"+"已还总额\t"+"已还本金\t"+"已还利息\t"+"剩余本金\t"+"总共缴纳\t"+"还款方式\t"+"已还总额\t"+"已还本金\t"+"已还利息\t"+"剩余本金\t"+"总共缴纳"); for( int i = minHuanYue ; i<= maxHuanYue ; i ++ ){
                yiHuanBenJin = 0;
                yiHuanLiXi = 0;
                yiHuanZongE = 0;
                shengYuBenJi = 0;
                yiCiXing = 0; // 等额本息的方式计算  for (int j = 1 ; j < i ; j ++ ){
                    dengebenxi(fd.lilv, fd.benjin, year, j);
                    yiHuanZongE += yuehuankuan;
                    yiHuanBenJin += yuehuankuan_benjin;
                    yiHuanLiXi += yuehuankuan_lixi ;
                }

                shengYuBenJi = fd.benjin * 10000 - yiHuanBenJin ;
                yiCiXing = shengYuBenJi + yiHuanZongE ;

                System.out.print(""+(i%12==0?i/12:i/12+1) +"\t");
                System.out.print(""+(i%12==0?12:i%12)+"\t"+"等额本息\t"+yiHuanZongE+"\t"+yiHuanBenJin+"\t"+yiHuanLiXi+"\t"+shengYuBenJi+"\t"+yiCiXing+"\t");

                yiHuanBenJin = 0;
                yiHuanLiXi = 0;
                yiHuanZongE = 0;
                shengYuBenJi = 0;
                yiCiXing = 0; // 等额本金的方式计算   for (int j = 1 ; j < i ; j ++ ){
                    dengebenjin(fd.lilv, fd.benjin, year, j);
                    yiHuanZongE += yuehuankuan;
                    yiHuanBenJin += yuehuankuan_benjin;
                    yiHuanLiXi += yuehuankuan_lixi ;
                }

                shengYuBenJi = fd.benjin * 10000 - yiHuanBenJin ;
                yiCiXing = shengYuBenJi + yiHuanZongE ;

                System.out.println("等额本金\t"+yiHuanZongE+"\t"+yiHuanBenJin+"\t"+yiHuanLiXi+"\t"+shengYuBenJi+"\t"+yiCiXing);
            }
        }
    }
}

你可能感兴趣的:(房贷提前一次性付清的结果比较)