java语言程序设计第八版 基础篇 上的一路题

java语言程序设计第八版 基础篇 上的一道题
题目 :2.15(财务应用程序:复利值)假设你每月向银行账户存100美元,年利率为5%,那么每月利率是0.05/12=0.00417。第一月之后,账户上的钱就变成:
       100*(1+0.00417)=100.417
第二个月之后,账户上的值就变成:
       (100+100.417)*(1+0.00417)=201.252
第三个月之后,账户上的值就变成:
        (100+201.252)*(1+0.00417)=302.507;
以此类推。
编写程序显示6个月后账户上的钱。


这是我写的程序,前两个月的都对了到了3月——6月的就不对了,求高人指点!!!!!!!!!!!


import java.util.Scanner;
import java.text.DecimalFormat;

public class Test
{
public static void main(String[] args)
   {
// Create an new Scanner
Scanner input=new Scanner(System.in);

//提示每月向账户存入的钱数
System.out.print("请输入每月存款数:");
double amount=input.nextDouble();

//提示输入年利率
System.out.print("请输月利率(0.00417):");
double monthlyInterestRate=input.nextDouble();
 
//提示输入要查看的月数
System.out.print("请输入月份:");
int monthOfNumbers=input.nextInt();

//计算某个月后账户上的钱数
double  allMoney=amount+(100*(1+monthlyInterestRate))*(monthOfNumbers-1)*(1+monthlyInterestRate);


String sal = new DecimalFormat("#.000").format(allMoney);

//输出结果
System.out.printf(monthOfNumbers+"个月后你的账户上的存款是:" +"   "+sal);
   }

}

计算出来的结果和题目上的不一样 是在无言了!!!求高人在这个程序上改进指点小弟,不慎感激!!!!!!!!!!java语言程序设计第八版 基础篇  上的一路题
------解决思路----------------------
double  allMoney=0;
for(int i=0;i<monthOfNumbers;i++)
allMoney=(allMoney+amount)*(1+monthlyInterestRate);


表示monthOfNumbers个月之后的钱
------解决思路----------------------
精确计算,不要用double,用bigdecimal类
------解决思路----------------------
楼主要学会贴代码
public class Demo {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("no args.");
        }
    }
}

------解决思路----------------------
public class Textt {

public static void main(String[] args) {
demo(3,0.05,100);

}

private static void demo(int time, double lilv,double money) {
if(time > 0 && lilv > 0 && money > 0){//判断一下信息是不正常的
double a=money;//记录你要每个月要存储的钱数
for (int k = 0; k < time; k++) {
if(k==0){
money=(money)*(1+lilv/12);
}else{//从第二个月的话,每月都要往里面加钱
money=(a+money)*(1+lilv/12);
}
}
System.out.println(money);
}else{
System.out.println("输入有误!!!");
}
}

}
这是我写的一个小测试,没有添加Scanner功能,你看一下或许有点帮助
------解决思路----------------------

import java.util.Scanner;
public class CalculationCompoundInterest {
public static void main(String[] args) {
double YEAR_RATE = 0.05;
double monthRate = YEAR_RATE/12;
System.out.println("Please input your money:");
Scanner input = new Scanner(System.in);
double money = input.nextDouble();
System.out.println("How many months do you want to store?");
int month = input.nextInt();
double totalMoney = 0.0;
for(int i = 1;i<=month;i++){
totalMoney = (money+totalMoney)*(1+monthRate);
}
System.out.printf("After%2d months,your total money will be:$%7.3f", month,totalMoney);
input.close();
}
}