我正在从教科书中练习练习问题,但我无法弄清楚如何使用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;
}
}
}
如何通过仅计算一年的学费来解决这个问题?现在我的解决方案是在每次迭代时抛出结果。 (暂无arrayList
或class
,只介绍了基础知识。)
欲望输出:
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
答案 0 :(得分:4)
你不需要一个外循环:从现在起十年后获得学费,将今天的学费乘以pow(RATE, 10)
;这将是你从现在起10年后的新baseTuition
。
之后,您可以运行一个循环来添加四个数字 - baseTuition
,baseTuition*RATE
,baseTuition*RATE*RATE
和baseTuition*RATE*RATE*RATE
。但是,这也不是必需的:您只需计算几何系列using the well-known formula的总和:
double res = pow(RATE, 10) * (1-pow(RATE, 4)) / (1 - RATE);
答案 1 :(得分:1)
计算复合的数学运算可以表示为:
所以十年后的基础学费将是
10000*Math.pow(1.05,10)
或16288.94627
。然后你可以乘以1.05得到第11年,然后再得到第12年,依此类推。添加每个值,您应该得到答案。
由于这似乎是一个家庭作业问题,我不打算给你解决它的代码。