2016-11-07 48 views
-1

所以我需要創建一個方法,我輸入歲,量和控制檯程序會輸出一個圖表,顯示了雙倍餘額折舊。雙倍餘額遞減在C#

這就是我所擁有的。

static void doubleDecliningBalance(double amount, int years) 
    { 

     Console.WriteLine("{0,-20}{1,10}", "Year", "Depreciation"); 
     Console.WriteLine("----------------------------------");    
     int count = 0; 
     double depreciation, amountLeft = 0; 


     while (count < years) 
     { 
      amountLeft = amount; 
      count = count + 1;     
      depreciation = (amountLeft * (2/years)); 
      amountLeft = amount - depreciation; 
      Console.WriteLine("{0,-20}{1,10:C2}", count, amountLeft); 
     } 
    } 

現在,當我運行該程序,它不會貶值。這個公式是正確的我認爲我很困惑爲什麼它不會貶值,這意味着如果我輸入5年和5000美元的金額;它將在所有5年中顯示5000。

+1

你永遠不會更新'amount',所以你的輸出將是每個循環相同。 –

+0

這將是學習使用調試器來逐步執行代碼的完美時間,這會在循環中顯示出兩到三個問題。 –

回答

0

您是從原始量循環,這意味着你沒有從每年的當前餘額貶值的每一次迭代中減去,但是從開始平衡。

如果amount代表原始量和amountLeft代表當前餘額,嘗試改變環路弄成這個樣子

amountLeft = amount; 
while (count < years) 
{ 
    count = count + 1;     
    depreciation = (amountLeft * (2.0/years)); 
    amountLeft -= depreciation; 
    Console.WriteLine("{0,-20}{1,10:C2}", count, amountLeft); 
} 

編輯:@Jim指出的那樣,是與您的代碼另一個錯誤。由於您在(2/years)左右添加了偏旁值,折舊可能爲零(即除非年份爲1或2),因爲計算是按整數除法完成的。要麼刪除偏食,要麼讓2成爲浮點值。

+0

這是修復程序的一部分。有兩行在循環中設置'amountLeft';他們都需要解決。 –

+0

@DStanley,真的。我沒有看到同一個變量正在被重新分配。答案已更新。 – Krumelur

+1

現在OP在想,爲什麼它在所有行上仍然是5000): – Jim