0

我正在从教科书中做练习题,但我无法弄清楚如何通过for循环有效地做到这一点。

问:今年的大学学费是10000美元,每年增长5%。编写一个程序来显示从现在开始十年后 4 年学费的总成本。

这是我到目前为止想出的。

public class ComputeFutureTuition {
    public static void main(String[] args) {
        double baseTuition = 10000;
        final double RATE = 1.05;

        System.out.println("The total cost of 4 years tution");

        for (int i = 0; i < 10; i++) {
            // keep track of the next 4 year's tuition
            double fourYearTuition = 0;

            fourYearTuition = baseTuition + (baseTuition * RATE) 
                + (baseTuition * RATE * RATE) + (baseTuition * RATE * RATE * RATE);

            System.out.printf("%2d yrs from now: $%5.2f\n", 
                    (i + 1), fourYearTuition);
            // Increase the tuition by 5%
            baseTuition = baseTuition * 1.05;
        }
    }
}

我如何通过只计算每年一次的学费来解决这个问题?现在我的解决方案是在每次迭代中抛出结果。(没有arrayListclass还没有,只是介绍了基础知识)。

期望输出:

The total cost of 4 years tution
 1 yrs from now: $43101.25
 2 yrs from now: $45256.31
 3 yrs from now: $47519.13
 4 yrs from now: $49895.08
 5 yrs from now: $52389.84
 6 yrs from now: $55009.33
 7 yrs from now: $57759.80
 8 yrs from now: $60647.79
 9 yrs from now: $63680.18
10 yrs from now: $66864.19
4

2 回答 2

4

您不需要外循环:要从现在获得十年后的学费,请将今天的学费乘以pow(RATE, 10); 那将是你新的baseTuition10 年。

之后,您可以运行一个循环来添加四个数字 - baseTuitionbaseTuition*RATEbaseTuition*RATE*RATEbaseTuition*RATE*RATE*RATE。但是,这也不是必需的:您所需要的只是使用众所周知的公式计算几何级数的总和:

double res = pow(RATE, 10) * (1-pow(RATE, 4)) / (1 - RATE);
于 2013-07-05T01:21:45.887 回答
1

计算复利的数学可以表示为:

在此处输入图像描述

所以十年后的基础学费将是

10000*Math.pow(1.05,10)16288.94627。然后你可以将它乘以 1.05 得到第 11 年,再乘以得到第 12 年,依此类推。将这些值中的每一个相加,您应该得到答案。

由于这似乎是一个家庭作业问题,我不会给你解决它的代码。

于 2013-07-05T01:37:26.930 回答