1 import java.util.Scanner;
2
3 public class text {
4
5 public static void main(String[] args) {
6 while (true) {
7 Scanner scanner = new Scanner(System.in);
8 System.out.println("----------------------------");
9 System.out.println(" 1.算本息 ");
10 System.out.println(" 2.算本金 ");
11 System.out.println(" 3.算投资年限或年利率 ");
12 System.out.println(" 4.定投收益 ");
13 System.out.println(" 5.每月等额本息还款 ");
14 System.out.println(" 0.退出 ");
15 System.out.println("----------------------------");
16 System.out.print("请选择:");
17 int number = scanner.nextInt();
18 switch (number) {
19 case 1:
20 Benxi();
21 break;
22 case 2:
23 Benjin();
24 break;
25 case 3:
26 Touzi();
27 break;
28 case 4:
29 Dingtoushouyi();
30 break;
31 case 5:
32 Dengerbenxihuanknan();
33 break;
34 case 0:
35 Exit();
36 break;
37 default: {
38 System.out.println("输入错误!请重新输入!");
39 break;
40 }
41 }
42 }
43
44 }
45
46 private static void Exit() {
47 // TODO 自动生成的方法存根
48 System.out.println("谢谢使用!");
49 System.exit(0);
50
51 }
52
53 private static void Dengerbenxihuanknan() {
54 // TODO 自动生成的方法存根
55 Scanner scanner = new Scanner(System.in);
56 System.out.print("请输入贷款本金:");
57 double money = scanner.nextDouble();
58 System.out.print("请输入年利率:");
59 double rate = scanner.nextDouble();
60 System.out.print("请输入年限:");
61 int year = scanner.nextInt();
62 double num = 1;
63 for (int i = 1; i <= year * 12; i++) {
64 num = (1 + (rate / 12)) * num;
65
66 }
67 money = money * ((rate / 12) * num) / (num - 1);
68 System.out.println("每月等额本息还款:"
69 + (double) (Math.round(money * 100) / 100.0));
70
71 }
72
73 private static void Dingtoushouyi() {
74 // TODO 自动生成的方法存根
75 Scanner scanner = new Scanner(System.in);
76
77 System.out.print("请选择(1为每年定投,2为每月定投):");
78 int number2 = scanner.nextInt();
79 if (number2 == 1) {
80 System.out.print("请输入每年的投资金额:");
81 double money = scanner.nextDouble();
82 System.out.print("请输入年利率:");
83 double rate = scanner.nextDouble();
84 System.out.print("请输入年限:");
85 int year = scanner.nextInt();
86 double num = 1;
87 for (int i = 1; i <= year; i++) {
88 num = (1 + rate) * num;
89
90 }
91 money = money * (1 + rate) * (-1 + num) / rate;
92 System.out.println("定投" + year + "年后的资产总值为:"
93 + (double) (Math.round(money * 100) / 100.0));
94 } else if (number2 == 2) {
95 System.out.print("请输入每月的定投金额:");
96 double money = scanner.nextDouble();
97 System.out.print("请输入年利率:");
98 double rate = scanner.nextDouble();
99 System.out.print("请输入年限:");
100 int year = scanner.nextInt();
101 double num = 1;
102 for (int i = 1; i <= year * 12; i++) {
103 num = (1 + (rate / 12)) * num;
104
105 }
106 money = money * (1 + (rate / 12)) * (-1 + num) / (rate / 12);
107 System.out.println("定投" + year + "年后的资产总值为:"
108 + (double) (Math.round(money * 100) / 100.0));
109
110 }
111
112 }
113
114 private static void Touzi() {
115 // TODO 自动生成的方法存根
116 Scanner scanner = new Scanner(System.in);
117 System.out.print("请输入投资金额:");
118 double money1 = scanner.nextDouble();
119 System.out.print("请输入收获金额:");
120 double money2 = scanner.nextDouble();
121
122 System.out.print("请选择(1为算时间,2为算利率):");
123 int number2 = scanner.nextInt();
124
125 if (number2 == 1) {
126 System.out.print("请输入年利率:");
127 double rate = scanner.nextDouble();
128 double year;
129 year = Logarithm.log(money2 / money1, 1 + rate);
130 year = Math.ceil(year);
131 System.out.println("需要存入的年限为:" + year);
132 } else if (number2 == 2) {
133 System.out.print("请输入年限:");
134 int year = scanner.nextInt();
135 double rate;
136 rate = Math.pow(money2 / money1, 1.0 / year) - 1;
137 System.out.println("所需年利率为:"
138 + (double) (Math.round(rate * 10000) / 10000.0));
139
140 }
141
142 }
143
144 private static void Benjin() {
145 // TODO 自动生成的方法存根
146 Scanner scanner = new Scanner(System.in);
147 System.out.print("请输入本息:");
148 double money = scanner.nextDouble();
149 System.out.print("请输入年利率:");
150 double rate = scanner.nextDouble();
151 System.out.print("请输入年限:");
152 int year = scanner.nextInt();
153
154 System.out.print("请选择(1为复利计算,2为单利计算):");
155 int number2 = scanner.nextInt();
156
157 if (number2 == 1) {
158 double num = 1;
159 for (int i = 1; i <= year; i++) {
160 num = num * (1 + rate);
161 }
162 money = money * (1 / num);
163 System.out.println("复利计算需要存入的本金为:"
164 + (double) (Math.round(money * 100) / 100.0));
165 }
166 if (number2 == 2) {
167 money = money * (1 / (1 + rate * year));
168 System.out.println("单利计算需要存入的本金为:"
169 + (double) (Math.round(money * 100) / 100.0));
170
171 }
172
173 }
174
175 private static void Benxi() {
176 // TODO 自动生成的方法存根
177 Scanner scanner = new Scanner(System.in);
178 System.out.print("请输入本金:");
179 double money = scanner.nextDouble();
180 System.out.print("请输入年利率:");
181 double rate = scanner.nextDouble();
182 System.out.print("请输入年限:");
183 int year = scanner.nextInt();
184
185 System.out.print("请选择(1为复利计算,2为单利计算):");
186 int number2 = scanner.nextInt();
187
188 if (number2 == 1) {
189 for (int i = 1; i <= year; i++) {
190 money = (1 + rate) * money;
191 }
192 System.out.println("存入" + year + "年后的复利计算本息为:"
193 + (double) (Math.round(money * 100) / 100.0));
194
195 }
196 if (number2 == 2) {
197 money = money + money * rate * year;
198 System.out.println("存入" + year + "年后的单利计算本息为:"
199 + (double) (Math.round(money * 100) / 100.0));
200
201 }
202
203 }
204 }
1 public class Logarithm {
2 static public double log(double value, double base){
3 return Math.log(value)/Math.log(base);
4
5 }
6
7 }