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 }