Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java年供款复利计算器_Java_Calculator - Fatal编程技术网

Java年供款复利计算器

Java年供款复利计算器,java,calculator,Java,Calculator,我想做一个程序,计算年度复利加上额外的年度供款。当我的供款=0时,我的输出正确地计算了新的余额,但当我更改供款时,输出错误 Scanner input1 = new Scanner(System.in); double amount; System.out.print("Enter starting year: "); Scanner input2 = new Scanner (System.in); System

我想做一个程序,计算年度复利加上额外的年度供款。当我的供款=0时,我的输出正确地计算了新的余额,但当我更改供款时,输出错误

    Scanner input1 = new Scanner(System.in);

    double amount;
    
    System.out.print("Enter starting year: ");
    Scanner input2 = new Scanner (System.in);
    
    System.out.print("Enter starting balance: ");
    Double principal = input1.nextDouble();

    System.out.print("Enter additional annual contribution: ");
    Double contribution = input1.nextDouble();

    System.out.print("Enter annual growth rate: ");
    Double rate = input1.nextDouble();
    Double rateDec = rate / 100

    for(int year = 1; year <= 21; year++){
        amount = (principal * Math.pow(1 + rateDec, year)) ;
        Double addedamount = amount + contribution;
        System.out.println(year + "  " + addedamount);

    }           
    
捐款=600

1  11569.0
2  12631.8961
3  13797.78683209
4  15076.65237611952
5  16479.439991365503
6  18018.157726528818
7  19705.977210229463
8  21557.346401900697
9  23588.113268244873
10  25815.6614439378
11  28259.05903785537
12  30939.221858623558
13  33879.09245672418
14  37103.83651578075
15  40641.05827415991
16  44521.036820926
17  48776.98528887373
18  53445.3351633656
19  58566.04814069572
20  64182.95820552914
21  70344.14685564491
但应该是

1  11,569.00 
2  13,290.04 
3  15,177.84 
4  17,248.57 
5  19,519.96 
6  22,011.44 
7  24,744.35 
8  27,742.08 
9  31,030.29 
10 34,637.12 
11 38,593.46 
12 42,933.17 
13 47,693.39 
14 52,914.88 
15 58,642.33 
16 64,924.77 
17 71,815.99 
18 79,374.95 
19 87,666.39 
20 96,761.26

我没有完全理解你的问题,但看起来你想用一笔供款每年计算复利。我假设每年从第一年开始的日期开始缴纳

还有,下次你问的时候请检查一下。它提供了更好的可读性

据我了解:

public static void main(String[] args) {
    
    double contribution = 600; //Yearly contribution
    double initialAmount = 10000; 
    double rateOfInterest = 9.69; //9.96% per anum
    double years = 10;

    double rateFactor = 1 + rateOfInterest/100; //Rate factor = 1.969 if rate is 10%

    //Final calculation Assuming contribution is made on first day of year including first year also
    double finalAmount = initialAmount;
    for(int year=0; year<years; year++){
        System.out.println(year+" "+finalAmount+" "+contribution);
        
        finalAmount = finalAmount*rateFactor;
        finalAmount += contribution;
    }   
    
    System.out.println("Final Amount: "+finalAmount);
}

PS:如果您不理解上述代码,并且希望更清楚地了解上述计算方法。您应该在任何网站的“能力倾向”复利部分进行更多练习。

欢迎来到stackoverflow。请提供准确的输出,你的代码是给,以及你想要的输出(与逻辑)。嗨,关于可读性很抱歉,我在这里是非常新的。我编辑了我的问题。希望它能带来更多sense@user14285182在这种情况下,上述解决方案完全可以正常工作,并符合您的预期输出。我编辑了答案并添加了输出,直到20年
public static void main(String[] args) {
    
    double contribution = 600; //Yearly contribution
    double initialAmount = 10000; 
    double rateOfInterest = 9.69; //9.96% per anum
    double years = 10;

    double rateFactor = 1 + rateOfInterest/100; //Rate factor = 1.969 if rate is 10%

    //Final calculation Assuming contribution is made on first day of year including first year also
    double finalAmount = initialAmount;
    for(int year=0; year<years; year++){
        System.out.println(year+" "+finalAmount+" "+contribution);
        
        finalAmount = finalAmount*rateFactor;
        finalAmount += contribution;
    }   
    
    System.out.println("Final Amount: "+finalAmount);
}
0 10000.0 600.0
1 11569.0 600.0
2 13290.0361 600.0
3 15177.840598089999 600.0
4 17248.57335204492 600.0
5 19519.960109858075 600.0
6 22011.444244503324 600.0
7 24744.353191795697 600.0
8 27742.0810160807 600.0
9 31030.28866653892 600.0
10 34637.12363832654 600.0
11 38593.46091888038 600.0
12 42933.16728191989 600.0
13 47693.39119153792 600.0
14 52914.88079799795 600.0
15 58642.33274732395 600.0
16 64924.77479053964 600.0
17 71815.98546774292 600.0
18 79374.95445956722 600.0
19 87666.38754669928 600.0
Final Amount: 96761.26049997444