Java 我如何计算和显示未来5年的投资价值

Java 我如何计算和显示未来5年的投资价值,java,Java,我相信我在这里犯了一个数学公式错误,代码似乎是有效的,但是数学结果完全错误了 publicstaticvoidmain(字符串[]args){ 扫描仪sam=新扫描仪(System.in); 系统输出打印(“输入初始投资:”); double principal=sam.nextDouble(); 系统输出打印(“输入初始速率:”); 双速率=sam.nextDouble(); System.out.print(“输入时间:”); 加倍时间=sam.nextDouble(); 比率=(1+(比率

我相信我在这里犯了一个数学公式错误,代码似乎是有效的,但是数学结果完全错误了

publicstaticvoidmain(字符串[]args){
扫描仪sam=新扫描仪(System.in);
系统输出打印(“输入初始投资:”);
double principal=sam.nextDouble();
系统输出打印(“输入初始速率:”);
双速率=sam.nextDouble();
System.out.print(“输入时间:”);
加倍时间=sam.nextDouble();
比率=(1+(比率/100));
双倍利息=(本金*利率);
for(int i=1;i
输出:

enter initial investment: 1000
enter initial rate:  5
Enter the time:  5
year 1 
interest: 1050.000000 
value: 2050.000000 
year 2 
interest: 2152.500000 
value: 3152.500000 
year 3 
interest: 3310.125000 
value: 4310.125000 
year 4 
interest: 4525.631250 
value: 5525.631250

问题似乎在于将比率设置为
1+比率/100
,即比率超过100%。此外,利息没有适当地计入本金

此外,最好避免在货币算术中使用
double

因此,固定代码可能如下所示:

Scanner sam=新的扫描仪(System.in);
系统输出打印(“输入初始投资:”);
int principal=sam.nextInt()*100;//分钱
系统输出打印(“输入初始速率:”);
int Rate=sam.nextInt();//百分比
System.out.print(“输入时间:”);
int time=sam.nextInt();
利息=(本金*利率)/100;
for(int i=1;i
输出

enter initial investment: 1000
enter initial rate:  5
Enter the time:  5
year 1 
interest: 50.0 
value: 1050.0
year 2 
interest: 52.5 
value: 1102.5
year 3 
interest: 55.12 
value: 1157.62
year 4 
interest: 57.88 
value: 1215.5

好吧,多亏了@alex rudenko的回答,我成功地解决了这个问题 '''

Scanner sam=新的扫描仪(System.in);
系统输出打印(“输入初始投资:”);
double principal=sam.nextDouble();
系统输出打印(“输入初始速率:”);
双速率=sam.nextDouble();
System.out.print(“输入时间:”);
加倍时间=sam.nextDouble();
比率/=100.0;
双倍利息=(本金*利率);
for(int i=1;i
'''

输出: 输入初始投资:1000 输入初始速率:5 输入时间:5 第一年 利息:50.000000 价值:1050.000000 第二年 利息:52.500000 价值:1102.500000 第三年 利息:55.125000 价值:1157.625000 第四年 利息:57.881250
值:1215.506250

我们可以看到一些输出吗?请添加更多详细信息我们如何猜测您的预期输出?添加的输出请解释逻辑并提及预期输出output@SamikSood本例中第一年的利息应为50.00(5%),而不是您计算的1050(105%)。
   Scanner sam = new Scanner(System.in);
   
   System.out.print("enter initial investment: ");
   double principal = sam.nextDouble();
   System.out.print("enter initial rate:  ");
   double Rate = sam.nextDouble();
   System.out.print("Enter the time:  ");
   double time = sam.nextDouble();
   Rate /= 100.0;
   double interest = (principal * Rate);
   for (int i=1; i < time; i++) {
       System.out.printf("year %d \n", i);
       System.out.printf("interest: %f \n", interest);
       principal  = (principal + interest);
       interest = (principal*Rate); 
       System.out.printf("value: %f \n", principal);
   }
}