0321复利计算4.0

  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 }

原文地址:https://www.cnblogs.com/xjy-gg/p/5303479.html