0317复利计算3.0

  1 import java.util.Scanner;
  2 
  3 public class text {
  4     public static void main(String[] args) {
  5         
  6 
  7         do {
  8             Scanner scanner = new Scanner(System.in);
  9             System.out.println(" ");
 10             System.out.print("请选择(0为退出,1为算本息,2为算本金,3为算投资,4为算n年后资产总值):");
 11             int number1 = scanner.nextInt();
 12 
 13             if (number1 == 1) {
 14                 System.out.print("请输入本金:");
 15                 double money = scanner.nextDouble();
 16                 System.out.print("请输入年利率:");
 17                 double rate = scanner.nextDouble();
 18                 System.out.print("请输入年限:");
 19                 int year = scanner.nextInt();
 20                 
 21                 System.out.print("请选择(1为复利计算,2为单利计算):");
 22                 int number2 = scanner.nextInt();
 23                 
 24                 if (number2 == 1) {
 25                     for (int i = 1; i <= year; i++) {
 26                         money = (1 + rate) * money;
 27                     }
 28                     System.out.println("存入" + year + "年后的复利计算本息为:" +(double) (Math.round(money*100)/100.0));
 29                     
 30                 }
 31                 if (number2 == 2) {
 32                     money = money + money * rate * year;
 33                     System.out.println("存入" + year + "年后的单利计算本息为:" +(double) (Math.round(money*100)/100.0));
 34                 }
 35                 
 36                 
 37 
 38             }
 39 
 40             if (number1 == 2) {
 41                 System.out.print("请输入本息:");
 42                 double money = scanner.nextDouble();
 43                 System.out.print("请输入年利率:");
 44                 double rate = scanner.nextDouble();
 45                 System.out.print("请输入年限:");
 46                 int year = scanner.nextInt();
 47                 
 48                 System.out.print("请选择(1为复利计算,2为单利计算):");
 49                 int number2 = scanner.nextInt();
 50                 
 51                 if (number2 == 1) {
 52                     double num = 1;
 53                     for (int i = 1; i <= year; i++) {
 54                         num = num * (1 + rate);
 55                     }
 56                     money = money * (1 / num);
 57                     System.out.println("复利计算需要存入的本金为:" +(double) (Math.round(money*100)/100.0));
 58                 }
 59                 if (number2 == 2) {
 60                     money = money * (1 / (1 + rate * year));
 61                     System.out.println("单利计算需要存入的本金为:" + (double) (Math.round(money*100)/100.0));
 62                 }
 63 
 64             }
 65             if (number1 == 3) {
 66 
 67                 System.out.print("请输入投资金额:");
 68                 double money1 = scanner.nextDouble();
 69                 System.out.print("请输入收获金额:");
 70                 double money2 = scanner.nextDouble();
 71 
 72                 System.out.print("请选择(1为算时间,2为算利率):");
 73                 int number2 = scanner.nextInt();
 74                 
 75                 if (number2 == 1) {
 76                     System.out.print("请输入年利率:");
 77                     double rate = scanner.nextDouble();
 78                     double year;
 79                     year = Logarithm.log(money2/money1,1+rate);
 80                     year = Math.ceil(year);
 81                     System.out.println("需要存入的年限为:" + year);
 82                 } else if (number2 == 2) {
 83                     System.out.print("请输入年限:");
 84                     int year = scanner.nextInt();
 85                     double rate;
 86                     rate = Math.pow(money2/money1, 1.0/year)-1;
 87                     System.out.println("所需年利率为:" + (double) (Math.round(rate*10000)/10000.0));
 88                 }
 89             }
 90             
 91             if(number1 == 4){
 92                 System.out.print("请输入每年的投资金额:");
 93                 double money1 = scanner.nextDouble();
 94                 System.out.print("请输入年利率:");
 95                 double rate = scanner.nextDouble();
 96                 System.out.print("请输入年限:");
 97                 int year = scanner.nextInt();double money2=0;
 98                 for(int i=1;i<=year;i++){
 99                     
100                     money1=money1+money2;
101                     money2=money1*(1+rate);
102                     
103                 }
104                 System.out.println(year+"年后的资产总值为:" + (double) (Math.round(money2*100)/100.0));
105             }
106 
107             if (number1 == 0) {
108                 System.out.println("谢谢使用!" );
109                 System.exit(0);
110                 
111             }
112         } while (true);
113     }
114 }
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/5289115.html