2017-03-07 119 views
0

我在樹屋做這個挑戰,我無法弄清楚爲什麼當我輸入「完成」時我會得到「南」。我想這是因爲它試圖分裂,但我不明白爲什麼它停留在0。反正這是我到目前爲止的代碼:返回平均值,非常簡單的C#代碼

using System; 

namespace averager 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var numberTotal = 0.0; 
      var entryNumber = 0.0; 
      var average = (numberTotal/entryNumber); 

      while(true) 
      { 
      // Prompt user to enter a number or enter "done" to see the average 
      Console.Write("Enter a number or type \"done\" to see the average: "); 
      var entry = Console.ReadLine(); 


      if(entry.ToLower() == "done") 
      { 
       Console.WriteLine("The average is: " + average); 
       break; 
      } 
      try 
      { 


       var number = double.Parse(entry); 
       numberTotal += + number; 
       entryNumber += + 1.0; 

      } 
      catch(FormatException) 
      { 
       Console.WriteLine("That is not a valid input"); 
       continue; 
      } 

      } 

     } 
    } 
} 
+0

0.0/0.0是NAN。 –

+0

您的第一個作業'平均'是'Nan',並且是您的代碼中的單一任務。 –

+0

通過更改這兩個變量 numberTotal + = + number; entryNumber + = + 1.0; 它應該改變平均數? – spexel

回答

1
Console.WriteLine("The average is: " + average); 

你在程序開始時設置平均水平,但實際上從未在用戶輸入值後進行設置。如果更改上面的線實際運行計算:

Console.WriteLine("The average is: " + numberTotal/entryNumber); 

你會看到預期的結果

0

平均計算的變量發生改變之前,並且仍然爲零。平均數不會再次計算。讀入新值後,應再次計算平均值。

1

看!您剛剛分配avegare 一次

// 0.0/0.0 == NAN 
var average = (numberTotal/entryNumber); 

,也不要改變它,因爲:

var number = double.Parse(entry); 
//what do you mean by unary + here? 
numberTotal += + number; 
//what do you mean by unary + here? 
entryNumber += + 1.0; 

// average is NOT updated 

最後,你輸出的初始average這是NAN

Console.WriteLine("The average is: " + average); 

average計算

var number = double.Parse(entry); 
numberTotal += number; 
entryNumber += 1.0; 

//TODO: do not forget to change average 
average = numberTotal/entryNumber;