1 package kxj;
2 import java.util.Scanner;
3
4 public class Fulijisuan {
5 public static double p,i,f ;
6 public static double n;
7 public static int a=0;
8
9 static double A[] = new double[10];
10 static double B[] = new double[10];
11 static double C[] = new double[10];
12 static double D[] = new double[10];
13
14 //计算本金
15 public static void Benjin(){
16 //int n;
17 //float f,i,p;
18 boolean flag;
19 Scanner scanner=new Scanner(System.in);
20 System.out.println("请输入终值: ");
21 f=scanner.nextDouble();
22 System.out.println("请输入年利率: ");
23 i=scanner.nextDouble();
24 System.out.println("请输入年数: ");
25 n=scanner.nextInt();
26 if(n>=0)
27 {
28 if(i>=0&&i<=1)
29 {
30 flag=true;
31 p=(float) (f*1/Math.pow(1+i, n));
32 }
33 else
34 {
35 System.out.println("输入的年利率有错!");
36 flag=false;
37
38 }
39 }
40 else
41 {
42 System.out.println("输入的年数有错!");
43 flag=false;
44
45 }
46 if(flag)
47 System.out.println("本金为: "+(double)(Math.round(p*100)/100.0));
48
49 }
50
51 //计算本息和
52 public static void Benxihe(){
53 double sum1=0,sum2=0;
54 boolean flag;
55 Scanner scanner=new Scanner(System.in);
56 System.out.println("请输入本金: ");
57 p=scanner.nextDouble();
58 System.out.println("请输入年利率: ");
59 i=scanner.nextDouble();
60 System.out.println("请输入年数: ");
61 n=scanner.nextInt();
62 if(n>=0)
63 {
64 if(i>=0&&i<=1)
65 {
66 sum1=(float) (p*Math.pow(1+i, n));
67 sum2=p*(1+i*n);
68 flag=true;
69
70 }
71 else
72 {
73 System.out.println("输入的年利率有错!");
74 flag=false;
75
76 }
77 }
78 else
79 {
80 System.out.println("输入的年数有错!");
81 flag=false;
82
83 }
84 if(flag)
85 {
86 System.out.println("复利的本息和为: "+(double)(Math.round(sum1*100)/100.0));
87 System.out.println("单利的本息和为: "+(double)(Math.round(sum2*100)/100.0));
88 }
89 }
90
91 //计算年数
92 public static void Nianshu(){
93 boolean flag;
94 Scanner scanner=new Scanner(System.in);
95 System.out.println("请输入本金: ");
96 p=scanner.nextDouble();
97 System.out.println("请输入终值: ");
98 f=scanner.nextDouble();
99 System.out.println("请输入年利率: ");
100 i=scanner.nextDouble();
101 if(i>=0&&i<=1)
102 {
103 n=Logarithm.log(f/p,1+i);
104 flag=true;
105 }
106 else
107 {
108 System.out.println("输入的年利率有错!");
109 flag=false;
110
111 }
112 if(flag)
113 System.out.println("需要存的年数为: "+Math.ceil(n));
114 }
115
116 //计算年利率
117 public static void Lilv(){
118 boolean flag;
119 Scanner scanner=new Scanner(System.in);
120 System.out.println("请输入本金: ");
121 p=scanner.nextDouble();
122 System.out.println("请输入终值: ");
123 f=scanner.nextDouble();
124 System.out.println("请输入年数: ");
125 n=scanner.nextInt();
126 if(n>=0)
127 {
128 i=Math.pow(f/p, 1.0/n)-1;
129 flag=true;
130 }
131 else
132 {
133 System.out.println("输入的年数有错!");
134 flag=false;
135
136 }
137 if(flag)
138 System.out.println("年报酬率为: "+(double)(Math.round(i*1000)/1000.0));
139 }
140
141 //计算本利之和连同年金投资后的总资产
142 public static void Nianjin(){
143 boolean flag;
144 Scanner scanner=new Scanner(System.in);
145 System.out.println("请输入每年定投资金: ");
146 p=scanner.nextDouble();
147 System.out.println("请输入年利率: ");
148 i=scanner.nextDouble();
149 System.out.println("请输入年数: ");
150 n=scanner.nextInt();
151 if(n>=0)
152 {
153 if(i>=0&&i<=1)
154 {
155 f=p*(1+i)*(Math.pow(1+i,n)-1)/i;
156 flag=true;
157
158 }
159 else
160 {
161 System.out.println("输入的年利率有错!");
162 flag=false;
163
164 }
165 }
166 else
167 {
168 System.out.println("输入的年数有错!");
169 flag=false;
170
171 }
172 if(flag)
173 System.out.println("年资产总值为:"+(double)(Math.round(f*100)/100.0));
174 }
175
176 //计算每月等额本息还款
177 public static void BenxiHuankuan(){
178 double f,i,p = 0;
179 int n;
180 boolean flag;
181 Scanner scanner=new Scanner(System.in);
182 System.out.println("请输入贷款金额: ");
183 f=scanner.nextDouble();
184 System.out.println("请输入年利率: ");
185 i=scanner.nextDouble();
186 System.out.println("请输入贷款年数: ");
187 n=scanner.nextInt();
188 if(n>=0)
189 {
190 if(i>=0&&i<=1)
191 {
192 i=i/12;
193 n=n*12;
194 p=f*i*Math.pow(1+i, n)/(Math.pow(1+i, n)-1);
195 flag=true;
196
197 }
198 else
199 {
200 System.out.println("输入的年利率有错!");
201 flag=false;
202
203 }
204 }
205 else
206 {
207 System.out.println("输入的年数有错!");
208 flag=false;
209
210 }
211 if(flag)
212 System.out.println("每月等额本息还款为:"+(double)(Math.round(p*10000)/10000.0));
213
214 }
215
216 public static void main(String[] args) {
217 int choice;
218 while(true){
219 System.out.println("\t\t|***********************|");
220 System.out.println("\t\t| 1. 求 本 金 \t|");
221 System.out.println("\t\t| 2. 求 本 息 和 \t|");
222 System.out.println("\t\t| 3. 求 年 数 \t|");
223 System.out.println("\t\t| 4. 求 利 率 \t|");
224 System.out.println("\t\t| 5. 求年资产总值\t|");
225 System.out.println("\t\t| 6. 求等额本息还款\t|");
226 System.out.println("\t\t| 7. 投 资 运 算 \t|");
227 System.out.println("\t\t| 0. 退 出 \t|");
228 System.out.println("\t\t|***********************|");
229 Scanner scanner=new Scanner(System.in);
230 System.out.println("\n请输入你的选择(0~7): ");
231 choice=scanner.nextInt();
232 switch(choice){
233 case 1:
234 Benjin();
235 break;
236 case 2:
237 Benxihe();
238 break;
239 case 3:
240 Nianshu();
241 break;
242 case 4:
243 Lilv();
244 break;
245 case 5:
246 Nianjin();
247 break;
248 case 6:
249 BenxiHuankuan();
250 break;
251 case 7:
252 TouziYunsuan();
253
254 a++;
255 break;
256 case 0:
257 System.out.println("Thanks for using!");
258 System.exit(0);
259 break;
260
261
262 default:
263 {
264 System.out.println("输入有误!");
265 break;
266 }
267 }
268 }
269 }
270
271 private static void TouziYunsuan() {
272 boolean flag;
273 int number;
274 Scanner scanner=new Scanner(System.in);
275 System.out.println("请输入本金: ");
276 p=scanner.nextDouble();
277 System.out.println("请输入年利率: ");
278 i=scanner.nextDouble();
279 System.out.println("请输入年限: ");
280 n = scanner.nextInt();
281 for (int t = 1; t <= n; t++) {
282 f = p * (1 + i * t);
283
284 System.out.println("第" + t + "年\t " + (double)(Math.round(f*100)/100.0) + "");
285 }
286 A[a]=p;
287 B[a]=i;
288 C[a]=n;
289 D[a]=f;
290
291 System.out.println("是否查看之前记录(1为是): ");
292 number = scanner.nextInt();
293 if(number==1){
294 System.out.print("\t"+"本金"+"\t"+"年利率"+"\t"+"年限"+"\t"+"终值"+"\n");
295 for(int b=0;b<=a;b++)
296 {
297 System.out.print(b+1+"\t"+A[b]+"\t"+B[b]+"\t"+C[b]+"\t"+D[b]+"\n");
298
299 }
300
301 }
302 else{
303 System.out.print("谢谢");
304
305 }
306 }
307 }