zoukankan      html  css  js  c++  java
  • 复利计算2.0 3.0

     

    (03/12)复利计算2.0

    一、要求:

    客户提出:

    2.如果按照单利计算,本息又是多少呢?

    3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?

    完成23功能,并成功PUSH到github上。

    二、使用工具和功能介绍

    1、用到语言是Java语言,工具:MyEclipse10,JDK:jdk1.6.0_23

    2、可以实现的功能:顾客通过输入1、2、3选择复利计算终值、复利计算本金或者单利计算利息。如果输入除了1、2、3外的数会显示输入错误并要求重新输入。选择了其中的一个会进入对应的计算公式得出计算结果。还在继续完善中。。。

    
    

    三、2.0实验结果截图:

    
    

     

     四、代码如下:

     1 import java.util.Scanner;
     2 
     3 public class fuli {
     4 
     5     /**
     6      * @param args
     7      */
     8     public static void main(String[] args) {
     9         // TODO Auto-generated method stub
    10         Scanner caculate = new Scanner(System.in);
    11         int a = 0;
    12         while (a == 0 || a == 1 || a == 2 || a == 3) {
    13             System.out.println("请选择1/2/3:
    1.复利计算终值2.复利计算本金3.单利计算本息");
    14             int a1 = caculate.nextInt();
    15             if (a1 == 1) {
    16                 fuli.CFutureValue();
    17                 break;
    18             } else if (a1 == 2) {
    19                 fuli.CPresentValue();
    20                 break;
    21             }
    22 
    23             else if (a1 == 3) {
    24                 fuli.PrincipalAndInterest();
    25                 break;
    26             } else {
    27                 System.out.println("
    您的输入错误");
    28                 a1 = a;
    29             }
    30         }
    31     }
    32 
    33     // 复利计算终值
    34     static void CFutureValue() {
    35         Scanner fuli = new Scanner(System.in);
    36         System.out.println("请输入本金:");
    37         double PresentValue = fuli.nextDouble(); // 本金
    38         System.out.println("请输入存款年数:");
    39         int year = fuli.nextInt(); // 存钱年数
    40         System.out.println("请输入利率:");
    41         double r = fuli.nextDouble(); // 利率
    42         double sum = 1;
    43         for (int i = 1; i <= year; i++) {
    44             sum = (1 + r) * sum;
    45         }
    46         System.out.println("总额为:" + sum * PresentValue);
    47     }
    48 
    49     // 复利计算本金
    50     static void CPresentValue() {
    51 
    52         Scanner fuli = new Scanner(System.in);
    53         System.out.println("请输入终值:");
    54         double sum = fuli.nextDouble(); // 终值
    55         System.out.println("请输入存款年数:");
    56         int year = fuli.nextInt(); // 存钱年数
    57         System.out.println("请输入利率:");
    58         double r = fuli.nextDouble(); // 利率
    59         double PresentValue = 1;
    60         for (int i = 1; i <= year; i++) {
    61             PresentValue = (1 + r) * PresentValue;
    62         }
    63         System.out.println("总额为:" + sum * (1 / PresentValue));
    64     }
    65 
    66     // 单利计算本息
    67     static void PrincipalAndInterest() {
    68         Scanner danli = new Scanner(System.in);
    69         System.out.println("请输入本金:");
    70         double PresentValue = danli.nextDouble(); // 本金
    71         System.out.println("请输入存款年数:");
    72         int Annuity = danli.nextInt(); // 存钱年数
    73         System.out.println("请输入利率:");
    74         double r = danli.nextDouble(); // 利率
    75         double sum1 = 1;
    76         sum1 = (1 + r * Annuity) * PresentValue;
    77         System.out.println("本息为:" + sum1);
    78     }
    79 
    80 }

    (03/17)复利计算3.0

     一、要求:

    4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢? 

    5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?

    6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?

    二、功能介绍

    相比2.0增加了客户提出的功能,可以计算获取复利终值的年限、计算报酬率、计算每年或每月定期投资所得终值,当计算完成时会显示本次计算结束的字眼。把输出的得数改成小数点后面的只保留两位。

    三、3.0实验结果截图:

    四、补充代码如下:

     1 // 4.计算年限
     2     static void CYear() {
     3         Scanner fuli = new Scanner(System.in);
     4         System.out.println("请输入本金:");
     5         double PresentValue = fuli.nextDouble(); // 本金
     6         System.out.println("请输入复利终值:");
     7         double FutureValue = fuli.nextInt(); // 复利终值
     8         System.out.println("请输入利率:");
     9         double r = fuli.nextDouble(); // 报酬率
    10         int year = (int) ((Math.log(FutureValue) / Math.log(1 + r)) - (Math
    11                 .log(PresentValue) / Math.log(1 + r)));
    12         System.out.println("所需年限为:" + year);
    13 
    14     }
    15 
    16     // 5.计算报酬率
    17     static void Rate() {
    18         Scanner fuli = new Scanner(System.in);
    19         int a = 0;
    20         while (a == 0) {
    21             System.out.println("是否选择计算翻倍:
    1、翻倍
    2、不翻倍");
    22             int a1 = fuli.nextInt();
    23             if (a1 == 2) {
    24                 System.out.println("请输入本金:");
    25                 double PresentValue = fuli.nextDouble(); // 本金
    26                 System.out.println("请输入复利终值:");
    27                 double FutureValue = fuli.nextInt(); // 复利终值
    28                 System.out.println("请输入存款年数:");
    29                 int year = fuli.nextInt(); // 存钱年数
    30                 double r = (Math.pow(FutureValue / PresentValue, 1.0 / year)) - 1;
    31                 System.out.println("年利率为:" + (float)(Math.round(r*100))/100);
    32                 break;
    33             } else if (a1 == 1) {
    34                 System.out.println("请输入几年后:");
    35                 int year = fuli.nextInt();
    36                 System.out.println("翻几番:");
    37                 int FutureValue = fuli.nextInt();
    38                 double r = 72.0 / (year / FutureValue); // 72法则
    39                 System.out.println(year + "年后本金翻倍的年利率至少为:" + (float)(Math.round(r*100))/100);
    40                 break;
    41             } else {
    42                 System.out.println("
    您的输入错误,请重新选择");
    43                 a1 = a;
    44             }
    45         }
    46 
    47     }
    48 
    49     // 6.计算按每年或每月定期投资的终值
    50     static void regular() {
    51         Scanner fuli = new Scanner(System.in);
    52         int a = 0;
    53         while (a == 0) {
    54             System.out.println("请选择
    1.按年投资
    2.按月投资");
    55             int a1 = fuli.nextInt();
    56             if (a1 == 1) {
    57                 System.out.println("要投资的本金:");
    58                 double P = fuli.nextDouble();
    59                 System.out.println("获得的年回报率:");
    60                 double r = fuli.nextDouble();
    61                 System.out.println("投资年限(年):");
    62                 double Y = fuli.nextInt();
    63 
    64                 double F = P * (Math.pow(1 + r, Y) - 1) / r;
    65                 System.out.println("按年投资的年金终值为:" + (float)(Math.round(F*100))/100);
    66 
    67                 break;
    68             }
    69 
    70             else if (a1 == 2) {
    71                 System.out.println("要投资的本金:");
    72                 double P = fuli.nextDouble();
    73                 System.out.println("获得的月回报率:");
    74                 double r = fuli.nextDouble();
    75                 System.out.println("投资年限(月):");
    76                 double Y = fuli.nextInt();
    77                 double F = P * (Math.pow(1 + r / 12.0, Y * 12) - 1) / (r / 12);
    78                 System.out.println("按月投资的年金终值为:" + (float)(Math.round(F*100))/100);
    79                 break;
    80             } else {
    81                 System.out.println("
    您的输入错误,请重新选择");
    82                 a1 = a;
    83             }
    84         }
    85 
    86     }

     (03/19)复利计算3.0

     一、要求:

    7. 你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应? 

        相互观赏程序运行情况。

    8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)

    改善完成至要求8,并成功PUSH到github上。

    二、内容和功能

    在原来的基础上增加了要求8的功能。

    程序不能让客户随意操作,在选择的时候如果输入数字选择错误了,会让顾客重选,计算结束后会说明本次计算结束。

    三、3.0实验结果截图:

    四、补充代码如下:

     1     //7.每月等额本息还款
     2     //每月还款金额 = (贷款本金 / 还款月数)+(本金 — 已归还本金累计额)×每月利率
     3     //等额本息计算公式:〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕
     4     static void reimbursement() {
     5         Scanner fuli = new Scanner(System.in);
     6         System.out.println("请输入贷款本金:");
     7         double P = fuli.nextDouble(); // 贷款本金
     8         System.out.println("请输入还年限:");
     9         int Y = fuli.nextInt(); // 还款年限
    10         System.out.println("请输入年利率:");
    11         double r = fuli.nextDouble(); // 年利率
    12         
    13         double reimbursement=(P*(r/2)*Math.pow(1+(r/12), Y*12))/(Math.pow(1+(r/12),Y*12)-1);
    14         System.out.println("总额为:" + (float)(Math.round(reimbursement*100))/100);
    15     }
    16 
    17 }

    五、问题

    1、保留两位小数的方法好像不太对,有时候只保留一位或者不保留。2、可能是因为前面定义变量的问题,当输入参数时在输入除了数字外的字符会报错,不知道如何判断,问题还没有解决,待完善。

  • 相关阅读:
    Bootstrap
    继承与多态
    面对对象与封装
    antd表格排序
    样式文本过长用...显示的时候,用弹框来显示文本(react为例)
    锚点
    树形结构的搜索,只显示搜索内容
    fetch不携带cookie
    antd 给select下拉框添加懒加载
    post方法下载文件
  • 原文地址:https://www.cnblogs.com/jjy520/p/5269436.html
Copyright © 2011-2022 走看看