码迷,mamicode.com
首页 > 其他好文 > 详细

复利计算--结对

时间:2016-04-06 23:26:19      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:

一、项目需求:

12. 即要追求利益,又要面对不可预知的金融投资风险, “不能把鸡蛋放在同一个篮子里”,所以有必要进行组合投资。

     通过上述计算与对比,可以帮助客户进行投资决策。

     客户:那么能否帮我记录下一笔一笔不同类型的投资,并动态显示资金现值呢?

二、实现

主要代码实现:在源代码投资模块中加入文件读写的功能。

  1 package calculator;
  2 
  3 import java.util.InputMismatchException;
  4 import java.util.Scanner;
  5 
  6 public class calculator {
  7 
  8     public static void main(String[] args) {
  9         System.out.print("请选择求单利1,复利2,本金3,时间4,利率5,投资6,贷款月还款计算7,退出8");
 10         Scanner scanner = new Scanner(System.in);
 11         int a = 0;
 12         try {
 13             a = Math.abs(scanner.nextInt());
 14         } catch (InputMismatchException e) {
 15             main(null);
 16         }
 17         input(a);
 18         scanner.close();
 19     }
 20 
 21     static void input(int a) {
 22         Scanner scanner = new Scanner(System.in);
 23         int k = a;
 24         String fruit = null;
 25         // record record=new record();
 26         try {
 27             switch (a) {
 28             case 1: {
 29                 System.out.print("请输入本金");
 30                 double A = Math.abs(scanner.nextDouble());
 31                 System.out.print("请输入年利率");
 32                 double rate = Math.abs(scanner.nextDouble());
 33                 System.out.print("请输入年限");
 34                 double C = Math.abs(scanner.nextInt());
 35                 double fruit1 = simple_interest(A, rate, C);
 36                 System.out.println("单利终值" + fruit1);
 37                 main(null);
 38 
 39             }
 40                 break;
 41             case 2: {
 42                 System.out.print("请输入本金");
 43                 double A = Math.abs(scanner.nextDouble());
 44                 System.out.print("请输入年利率");
 45                 double B = Math.abs(scanner.nextDouble());
 46                 System.out.print("请输入存入年限");
 47                 int C = Math.abs(scanner.nextInt());
 48                 fruit = compound_interest(A, B, C);
 49                 System.out.println("复利终值" + fruit);
 50                 main(null);
 51             }
 52                 break;
 53             case 3: {
 54                 System.out.print("请输入预期钱数");
 55                 double A = Math.abs(scanner.nextDouble());
 56                 System.out.print("请输入年利率");
 57                 double rate = Math.abs(scanner.nextDouble());
 58                 System.out.print("请输入存入年限");
 59                 double C = Math.abs(scanner.nextInt());
 60                 fruit = capital(A, rate, C);
 61                 System.out.println("本金" + fruit);
 62                 main(null);
 63             }
 64                 break;
 65             case 4: {
 66                 int i = 0;
 67                 System.out.print("请输入本金");
 68                 double A = Math.abs(scanner.nextDouble());
 69                 System.out.print("请输入年利率");
 70                 double B = Math.abs(scanner.nextDouble());
 71                 System.out.print("请输入预期金额");
 72                 double C = Math.abs(scanner.nextDouble());
 73                 i = time(A, B, C);
 74                 System.out.println("需" + i + "年");
 75                 main(null);
 76             }
 77                 break;
 78             case 5: {
 79                 System.out.print("请输入本金");
 80                 double A = Math.abs(scanner.nextDouble());
 81                 System.out.print("请输入预期金额");
 82                 double B = Math.abs(scanner.nextDouble());
 83                 System.out.print("请输入存入年限");
 84                 double C = Math.abs(scanner.nextDouble());
 85                 fruit = rate(A, B, C);
 86                 System.out.println("利率为" + fruit);
 87                 main(null);
 88             }
 89                 break;
 90             case 6: {
 91                 System.out.print("请输入投资额");
 92                 double A = Math.abs(scanner.nextDouble());
 93                 System.out.print("请输入利率");
 94                 double B = Math.abs(scanner.nextDouble());
 95                 System.out.print("请输入期限");
 96                 int C = Math.abs(scanner.nextInt());
 97                 double fruit1 = invest(A, B, C);
 98                 record.writerecord(A, B, C, fruit1);
 99                 main(null);
100             }
101                 break;
102             case 7: {
103                 System.out.print("请输入贷款额");
104                 double A = Math.abs(scanner.nextDouble());
105                 System.out.print("请输入贷款利率");
106                 double B = Math.abs(scanner.nextDouble());
107                 System.out.print("请输入贷款年限");
108                 int C = Math.abs(scanner.nextInt());
109                 fruit = repayment(A, B, C);
110                 main(null);
111 
112             }
113                 break;
114             case 8:
115                 System.out.print("是否清除投资记录(y/n)");
116                 String A = scanner.next();
117                 if (A.equals("y"))
118                     record.appendMethodB("E:\\JAVA1\\calculator\\invest.txt",
119                             "", false);
120                 scanner.close();
121                 System.out.print("已退出");
122                 break;
123             default:
124                 System.out.println("请重新输入");
125                 main(null);
126             }
127         } catch (InputMismatchException e) {
128             input(k);
129         }
130     }
131 
132     static double simple_interest(double a, double rate, double c) {
133         double A = a;
134         double D = 1;
135         double C = c;
136         D = A * rate * C;
137         return A + D;
138     }
139 
140     static String compound_interest(double a2, double b2, int c2) {
141         double A = a2;
142         double B = b2;
143         int C = c2;
144         double D = 1;
145         for (int i = 1; i <= C; i++) {
146             D = D * (1 + B);
147         }
148         return String.format("%.4f", A * D);
149     }
150 
151     static String capital(double a2, double rate2, double c2) {
152         // TODO Auto-generated method stub
153         double A = a2;
154         double rate = rate2;
155         double C = c2;
156         double D = 1;
157         for (int i = 1; i <= C; i++) {
158             D = D * (1 + rate);
159         }
160 
161         return String.format("%.4f", A / D);
162     }
163 
164     static int time(double a2, double b2, double c2) {
165         double A = a2;
166         double B = b2;
167         double C = c2;
168         double D = 1;
169         double E = 1;
170         int i = 1;
171 
172         while (true) {
173             D = D * (1 + B);
174             E = A * D;
175             if (E <= C)
176                 i++;
177             else
178                 break;
179         }
180         return i;
181     }
182 
183     static String rate(double a2, double b2, double c2) {
184         double A = a2;
185         double B = b2;
186         double C = c2;
187         double D = 1;
188         D = Math.pow(B / A, 1 / C) - 1;
189         return String.format("%.4f", D);
190     }
191 
192     static double invest(double a2, double b2, int c2) {
193         // TODO Auto-generated method stub
194         double A = a2;
195         double B = b2;
196         int C = c2;
197         double D = 0;
198         for (int i = 1; i <= C; i++) {
199             D = D + A;
200             D = D * (1 + B);
201         }
202         return D;
203     }
204 
205     static String repayment(double a2, double b2, int c2) {
206         // TODO 自动生成的方法存根
207         double A = a2;
208         double B = b2;
209         int C = c2;
210         double D = 0;
211         for (int i = 1; i <= C; i++) {
212             D = A * Math.pow(1.0 + B, C);
213         }
214         double Repayment = D / (C * 12);
215         double interest = A * B * C;
216         double sum = A + interest;
217         double Repayment1 = sum / (C * 12);
218         System.out.println("每月需要还款(单利)" + Repayment1);
219         System.out.println("每月需要还款(复利)" + String.format("%.4f", Repayment));
220         return String.format("%.4f", Repayment);
221     }
222 
223 }
 1 package calculator;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8 
 9 public class record {
10 
11     static void printrecord() {
12         File file = new File("E:\\JAVA1\\calculator\\invest.txt");
13         BufferedReader reader = null;
14         try {
15             // System.out.println("以行为单位读取文件内容,一次读一整行:");
16             reader = new BufferedReader(new FileReader(file));
17             String tempString = null;
18             int line = 1;
19             // 一次读入一行,直到读入null为文件结束
20             while ((tempString = reader.readLine()) != null) {
21                 // 显示行号
22                 System.out.println("第 " + line + "次投资" + tempString);
23                 line++;
24             }
25             reader.close();
26         } catch (IOException e) {
27             e.printStackTrace();
28         } finally {
29             if (reader != null) {
30                 try {
31                     reader.close();
32                 } catch (IOException e1) {
33                 }
34             }
35         }
36 
37     }
38 
39     static void writerecord(double a, double b, int c, double fruit1) {
40         String fileName = "E:\\JAVA1\\calculator\\invest.txt";
41         String content = connent(a, b, c, fruit1);
42         appendMethodB(fileName, content, true);
43         printrecord();
44     }
45 
46     static String connent(double a, double b, int c, double fruit1) {
47 
48         String content1 = String.valueOf(a);
49         String content2 = String.valueOf(b);
50         String content3 = String.valueOf(c);
51         String content4 = String.valueOf(fruit1);
52         return content1 + "元,利率为" + content2 + ",存入" + content3 + "年,获利"
53                 + content4 + "元\n";
54     }
55 
56     static void appendMethodB(String fileName, String content, boolean change) {
57         try {
58             // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
59             FileWriter writer = new FileWriter(fileName, change);
60             writer.write(content);
61             writer.close();
62         } catch (IOException e) {
63             e.printStackTrace();
64         }
65 
66     }
67 }

运行结果:技术分享

预计时间:4h

实际时间:5h

---------------------------------------------------------------------------------------------------------------------------------

201406114237古林萍 http://www.cnblogs.com/moliny/           https://github.com/Moliny

201406114228 郑铭泽 http://www.cnblogs.com/95mz/                  https://github.com/zhengmingze

---------------------------------------------------------------------------------------------------------------------------------

在该过程中,我们事先进行了讨论最终决定了使用文件来存储,我的同伴负责代码的审核和找了读写文件的资料,我负责了代码的写入,并将写好的代码交与它测试BUG,我觉得在此过程中反而轻松了一些,因为我只需专注于代码的实现,而在此过程中我的一些代码习惯或代码的不规范交给我的同伴去完成。

技术分享

资料来源:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html

 

复利计算--结对

标签:

原文地址:http://www.cnblogs.com/95mz/p/5361519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!