2017-03-07 5 views
0

Ich mache diese Herausforderung auf Treehouse und ich kann nicht herausfinden, warum ich "Nan" bekomme, wenn ich "fertig" tippe. Ich denke, es ist, weil es zu teilen versucht, aber ich verstehe nicht, warum es auf 0 bleibt hier Sowieso mein Code so weit:zurück die durchschnittliche, sehr einfache C# -Code

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 ist NAN. –

+0

Ihre erste Zuweisung für "Durchschnitt" ist "Nan" und ist es eine einfache Zuordnung in Ihrem Code. –

+0

durch Ändern dieser 2 Variablen numberTotal + = + number; entryNumber + = + 1,0; sollte es den Durchschnitt ändern nein? – spexel

Antwort

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

Sie Durchschnitt zu Beginn des Programms festgelegt, aber nie wirklich Stellen Sie es ein, nachdem der Benutzer Werte eingegeben hat. Wenn Sie die obige Zeile ändern, um tatsächlich die Berechnung auszuführen:

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

werden Sie erwartete Ergebnisse

0

Die durchschnittliche siehe berechnet wird, bevor die Variablen geändert werden, und sind immer noch Null. Der Durchschnitt wird nie wieder berechnet. Nachdem Sie die neuen Werte eingelesen haben, sollten Sie den Durchschnitt erneut berechnen.

1

Schau! Sie haben gerade die avegare einmal zugewiesen:

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

und es nicht immer ändern, da:

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 

schließlich Sie die Ausgabe der Anfangs average die NAN ist:

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

Hinzufügen average Berechnung

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

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