2013-07-05 17 views
0

我從教科書中練習練習題,但我無法弄清楚如何使用for循環有效地完成此練習。Tution從現在開始4年的總成本

問題:今年大學的學費是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 
+0

你目前的代碼有什麼問題?你特定的*代碼*問題是什麼? –

回答

4

你並不需要一個外循環:從現在起的十年得到了學費,由pow(RATE, 10)乘今天的學費;那將是你10年後新的baseTuition

之後,您可以運行一個循環來添加四個數字 - baseTuitionbaseTuition*RATE,baseTuition*RATE*RATEbaseTuition*RATE*RATE*RATE。然而,這是沒有必要之一:所有你需要的是計算幾何級數using the well-known formula的總和:

double res = pow(RATE, 10) * (1-pow(RATE, 4))/(1 - RATE); 
+1

認識數學可以讓一切變得更容易。 – Alain

+0

我正在考慮跟蹤Y1,Y2,Y3,Y4。然後在每次迭代中更新Y1和Y4。 (所以每年只計算一次)。 – George

1

計算複利的數學可以表示爲這樣:

enter image description here

所以十年後的基礎學費將爲

10000*Math.pow(1.05,10)16288.94627。然後你可以乘以1.05得到第11年,再次得到第12次,依此類推。添加每個值,你應該得到你的答案。

由於這似乎是一個家庭作業問題,我不會給你解決它的代碼。