复利计算之回顾并总结这三次实验

复利计算1.0,2.0,3.0的总结

程序源代码已上传至https://github.com/ganjiaping/ganjiaping.git,同时Github上的Wiki页面,有说明如何部署运行该项目/程序。

 

实验名称 估计完成所需时间(h) 估计代码量(行) 实际完成所需时间(h) 实际代码量(行)
复利计算1.0 2 50 1.5 30
复利计算2.0 3 70 2.5 44
复利计算3.0 5 140 4 128

 

所用语言:JAVA语言

开发工具:MyEclipse9

总结:

复利计算1.0:刚开始连什么是复利都不知道,然后花了点时间去查询理解什么是复利(复利是指在每经过一个计息期后,都要将所生利息加入本金,以计算下期的利息)。然后知道要求复利就必须知道与它相关的三个参数即:本金,年利率,存储的年数。最后用简单的代码把复利公式写成一个计算程序。

复利计算2.0:刚开始连什么是单利都不知道,然后花了点时间去查询理解什么是单利(单利是指按照固定的本金计算的利息)。然后知道要求单利就必须知道与它相关的三个参数即:本金,年利率,存储的年数。最后用代码把单利公式和复利公式以及把复利公式逆过来求本金一起写成一个程序。

复利计算3.0:灵活利用复利公式求年数,年利率,资产总值。然后用代码把三次实验内容写在一个程序内。

编程能力有待提高,还有代码的利用率也有待加强。

整个程序的源代码如下:

import java.util.*; 
  
 public class FuLiLast{ 
      public static double b,l,n,h; 
       
    //计算本息和 
      public static void Benxihe(){ 
           double sum1,sum2; 
            Scanner scanner=new Scanner(System.in); 
            System.out.println("请输入本金: "); 
            b=scanner.nextDouble(); 
            System.out.println("请输入年利率: "); 
            l=scanner.nextDouble(); 
            System.out.println("请输入年数: "); 
            n=scanner.nextInt(); 
            sum1=(float) (b*Math.pow(1+l, n)); 
            sum2=b*(1+l*n); 
            System.out.println("复利的本息和为: "+(double)(Math.round(sum1*100)/100.0)); 
            System.out.println("单利的本息和为: "+(double)(Math.round(sum2*100)/100.0)); 
      } 
       
      //计算本金 
     public static void Benjin(){ 
          Scanner scanner=new Scanner(System.in); 
          System.out.println("请输入年利率: "); 
           l=scanner.nextDouble(); 
           System.out.println("请输入年数: "); 
           n=scanner.nextInt(); 
           System.out.println("请输入本息和: "); 
           h=scanner.nextDouble(); 
           b=(float) (h*1/Math.pow(1+l, n)); 
           System.out.println("本金为: "+(double)(Math.round(b*100)/100.0)); 
     } 
      
   //计算年数 
     public static class Logarithm { 
          public static double log(double value, double base){ 
              return Math.log(value)/Math.log(base);          
           } 
     } 
  
     public static void Nianshu(){ 
           Scanner scanner=new Scanner(System.in); 
           System.out.println("请输入本金: "); 
           b=scanner.nextDouble(); 
           System.out.println("请输入年利率: "); 
           l=scanner.nextDouble(); 
           System.out.println("请输入本息和: "); 
           h=scanner.nextDouble(); 
           n=Logarithm.log(h/b,1+l); 
           n=Math.ceil(n); 
           System.out.println("需要存的年数为: "+Math.ceil(n));      
     } 
      
     //计算年利率 
     public static void Lilu(){ 
          Scanner scanner=new Scanner(System.in); 
           System.out.println("请输入本金: "); 
           b=scanner.nextDouble(); 
           System.out.println("请输入年数: "); 
           n=scanner.nextInt(); 
           System.out.println("请输入本息和: "); 
           h=scanner.nextDouble(); 
           l=Math.pow(h/b, 1.0/n)-1; 
           System.out.println("年报酬率为: "+(double)(Math.round(l*1000)/1000.0)); 
     } 
      
     //计算本利之和连同年金投资后的总资产值 
     public static void Nianzongzhi(){ 
          int k=1; 
          h=0; 
          Scanner scanner=new Scanner(System.in); 
           System.out.println("请输入本金: "); 
           b=scanner.nextDouble(); 
           System.out.println("请输入年利率: "); 
           l=scanner.nextDouble(); 
           System.out.println("请输入年数: "); 
           n=scanner.nextInt(); 
           while(k<=n){ 
               b=b+h; 
               h=b*(1+l); 
               k++; 
           } 
          System.out.println("年资产总值为:"+(int)h); 
     } 
      
      public static void main(String[] args) { 
          int choice; 
          while(true){ 
          System.out.println("\t\t|------------------|"); 
          System.out.println("\t\t|  1.求本息和                               |"); 
          System.out.println("\t\t|  2.求本金                                   |"); 
          System.out.println("\t\t|  3.求年数                                   |"); 
         System.out.println("\t\t|  4.求年利率                               |"); 
         System.out.println("\t\t|  5.求年资产总值                       |"); 
          System.out.println("\t\t|  6.退出                                       |"); 
          System.out.println("\t\t|------------------|"); 
          Scanner scanner=new Scanner(System.in); 
          System.out.println("请输入你的选择(1~6):  "); 
          choice=scanner.nextInt(); 
          switch(choice){ 
          case 1: 
              Benjin(); 
              break; 
          case 2: 
              Benxihe(); 
              break; 
          case 3: 
              Nianshu(); 
              break; 
          case 4: 
              Lilu(); 
              break; 
          case 5: 
              Nianzongzhi(); 
              break; 
          case 6: 
              System.exit(0); 
              break; 
              default: 
              { 
                  System.out.println("出错了!"); 
                  break; 
              } 
          } 
              }         
          } 
      } 

运行结果如下:

 

 

 

posted on 2016-03-17 22:19  ganxiaoxiao  阅读(542)  评论(0编辑  收藏  举报

导航