复利计算C转java版

  1 import java.util.Scanner;
  2 
  3 public class Compound_int {
  4 
  5     public static void main(String[] args) {
  6         tip();
  7         while (true) {
  8             menu();
  9             int n = scanner.nextInt();
 10             if (n >= 0 && n <= 7) {
 11                 if (n == 0)
 12                     break;
 13                 switch (n) {
 14                 case 1:
 15                     benjin();
 16                     break;
 17                 case 2:
 18                     fuli();
 19                     break;
 20                 case 3:
 21                     danli();
 22                     break;
 23                 case 4:
 24                     years();
 25                     break;
 26                 case 5:
 27                     annual_int_rate();
 28                     break;
 29                 case 6:
 30                     YM_Equal_cast_final();
 31                     break;
 32                 case 7:
 33                     Average_capital_plus_interest();
 34                     break;
 35                 case 0:
 36                     n = 0;
 37                     break;
 38 
 39                 }
 40             } else {
 41                 System.out.println("输入超出范围,请重新输入:");
 42 
 43             }
 44         }
 45     }
 46 
 47     static Scanner scanner = new Scanner(System.in);
 48 
 49     static void tip()// 计算公式和一些变量的介绍
 50     {
 51         System.out.printf("复利计算软件
");
 52         System.out.printf("    复利计算公式:F=P*pow((1+i/m),N*m)
");
 53         System.out.printf("    单利计算公式:F=P+P*N*i
");
 54         System.out.printf("    等额投资公式:F=P*12*(1+i)*(pow(1+i,N)-1)/i
");
 55         System.out.printf("	F:复利终值|年金终值
");
 56         System.out.printf("	P:本金
");
 57         System.out.printf("	i:利率
");
 58         System.out.printf("	N:利率获取时间的整数倍
");
 59         System.out.printf("	m:年复利次数(一年当中的滚利次数)
");
 60     }
 61 
 62     static void menu()// 菜单
 63     {
 64         System.out.printf("		|-----------------------------------|
");
 65         System.out.printf("		|             welcome               |
");
 66         System.out.printf("		|-----------------------------------|
");
 67         System.out.printf("		|           1:计算本金               |
");
 68         System.out.printf("		|           2:计算年复利终值          |
");
 69         System.out.printf("		|           3:单利计算               |
");
 70         System.out.printf("		|           4:计算年份               |
");
 71         System.out.printf("		|           5:计算年利率             |
");
 72         System.out.printf("		|           6:等额定投(年|月)         |
");
 73         System.out.printf("		|           7:等额还款               |
");
 74         System.out.printf("		|           0:结束                   |
");
 75         System.out.printf("		|-----------------------------------|
");
 76         System.out.printf("请输入你要选择的功能(0~7):");
 77 
 78     }
 79 
 80     static double capital_formula(double F, double i, int N, int m)// 本金计算公式
 81     {
 82         double P;
 83         P = F / Math.pow((1 + i / m), N * m);
 84         return P;
 85     }
 86 
 87     static void benjin()// 计算本金
 88     {
 89         int N, m;
 90         double i, F, P;
 91         System.out.printf("复利终值:");
 92         F = scanner.nextDouble();
 93         System.out.printf("年利率:");
 94         i = scanner.nextDouble();
 95         System.out.printf("存入年限:");
 96         N = scanner.nextInt();
 97         System.out.printf("年复利次数:");
 98         m = scanner.nextInt();
 99         P = capital_formula(F, i, N, m);
100         System.out.println("年复利终值为" + F + "需要本金为:" + P);
101     }
102 
103     static double compound_amount_formla(double P, double i, int N, int m)// 复利计算公式
104     {
105         double F;
106         F = P * Math.pow((1 + i / m), N * m);
107         return F;
108     }
109 
110     static void fuli()// 计算复利终值
111     {
112         int N, m;
113         double i, F, P;
114         System.out.printf("存入本金:");
115         P = scanner.nextDouble();
116         System.out.printf("年利率:");
117         i = scanner.nextDouble();
118         System.out.printf("存入年限:");
119         N = scanner.nextInt();
120         System.out.printf("年复利次数:");
121         m = scanner.nextInt();
122         F = compound_amount_formla(P, i, N, m);
123         System.out.println("复利终值:" + F);
124     }
125 
126     static double simple_interest_formula(double P, int N, double i)// 单利计算公式
127     {
128         double F;
129         F = P + P * N * i;
130         return F;
131     }
132 
133     static void danli()// 单利计算
134     {
135         int N;
136         double i, F, P;
137         System.out.printf("存入本金:");
138         P = scanner.nextDouble();
139         System.out.printf("年利率:");
140         i = scanner.nextDouble();
141         System.out.printf("存入年限:");
142         N = scanner.nextInt();
143         F = simple_interest_formula(P, N, i);
144         System.out.println("本息和为:" + F);
145     }
146 
147     static int years_formula(double F, double P, double i, int m)// 根据复利终值求年份
148     {
149         int year;
150         year = (int) (Math.log(F / P) / Math.log(1 + i / m) / m);
151         return year;
152     }
153 
154     static void years()// 求年份
155     {
156         int N, m;
157         double i, F, P;
158         System.out.printf("复利终值:");
159         F = scanner.nextDouble();
160         System.out.printf("存入本金:");
161         P = scanner.nextDouble();
162         System.out.printf("年利率:");
163         i = scanner.nextDouble();
164         System.out.printf("年复利次数:");
165         m = scanner.nextInt();
166         N = years_formula(F, P, i, m);
167         System.out.println("从" + P + "到" + F + "需要" + N + "年");
168     }
169 
170     static double rate_formula(int m, double F, double P, int N)// 复利的利率计算公式
171     {
172         double rate;
173         rate = m * (Math.pow(F / P, 1.0 / (N * m)) - 1);
174         return rate;
175     }
176 
177     static void annual_int_rate()// 计算年利率
178     {
179         int N, m;
180         double i, F, P;
181         System.out.printf("复利终值:");
182         F = scanner.nextDouble();
183         System.out.printf("存入本金:");
184         P = scanner.nextDouble();
185         System.out.printf("存入年限:");
186         N = scanner.nextInt();
187         System.out.printf("年复利次数:");
188         m = scanner.nextInt();
189         i = rate_formula(m, F, P, N);
190         System.out.println("从" + P + "到" + F + "需要" + i);
191     }
192 
193     static double according_year_formula(double P, int N, double i)// 按照年份等额投资计算公式
194     {
195         double final_value;
196         final_value = P * (Math.pow(1 + i, N) - 1) / i;
197         return final_value;
198     }
199 
200     static double according_month_formula(double P, int N, double i)// 按照月份等额投资计算公式
201     {
202         double final_value;
203         final_value = P * 12 * (1 + i) * (Math.pow(1 + i, N) - 1) / i;
204         return final_value;
205     }
206 
207     static void YM_Equal_cast_final()// 计算等额投资
208     {
209         int N, n;
210         double i, F, P;
211         System.out.printf("		1:按年投资
		2:按月投资
");
212         System.out.printf("请选择你要的功能<1|2>:");
213         n = scanner.nextInt();
214         if (n == 1) {
215             System.out.printf("存入本金:");
216             P = scanner.nextDouble();
217             System.out.printf("存入年限:");
218             N = scanner.nextInt();
219             System.out.printf("年利率:");
220             i = scanner.nextDouble();
221             F = according_year_formula(P, N, i);
222             System.out.println(N + "年后的总产值:" + F);
223 
224         } else if (n == 2) {
225             System.out.printf("存入本金:");
226             P = scanner.nextDouble();
227             System.out.printf("存入年限:");
228             N = scanner.nextInt();
229             System.out.printf("年利率:");
230             i = scanner.nextDouble();
231             F = according_month_formula(P, N, i);
232             System.out.println(N + "年后的总产值:" + F);
233         } else {
234             System.out.printf("输入有误!
");
235         }
236 
237     }
238 
239     static double Average_capital_plus_interest_formula(double F, int N,double i)// 等额还款公式
240     {
241         double refund;
242         refund = F * i / (12 * (1 + i) * (Math.pow(1 + i, N) - 1));
243         return refund;
244     }
245 
246     static void Average_capital_plus_interest()// 等额还款
247     {
248         int N;
249         double i, F, P;
250         System.out.printf("贷款金额:");
251         F = scanner.nextDouble();
252         System.out.printf("存入年限:");
253         N = scanner.nextInt();
254         System.out.printf("年利率:");
255         i = scanner.nextDouble();
256         P = Average_capital_plus_interest_formula(F, N, i);
257         System.out.println("贷款" + F + "每月需要还款" + P);
258     }
259 
260 }
原文地址:https://www.cnblogs.com/zzy999/p/5323715.html