2016-06-02 5 views
0

Ich habe diesen Notenbuchcode vor einiger Zeit erstellt. Ich habe gelernt, es zu schreiben, indem ich Videos und ähnliches beim Lernen von C# ansehe.C# Eingabewerte für GradeBook

Das Einfügen einer Note in das Notenbuch ist erfolgreich, wenn die Eingabequalität fest codiert ist. Ich versuche, den Code zu aktualisieren, so dass ich eine Note aus dem Konsolenfenster eingeben kann, anstatt dass die Note fest codiert ist.

Der folgende Code ist, was ich habe, so weit:

class Program 
{ 
    static void Main(string[] args) 
    { 
     //SpeechSynthesizer synth = new SpeechSynthesizer(); 
     //synth.Speak("Welcome, to the Grade Book Program."); 

     //SpeechSynthesizer justMoreToSay = new SpeechSynthesizer(); 
     //justMoreToSay.Speak("Okay, Now that we got that out of the way. May you input the Grades please."); 


     /*Gradebook book = new Gradebook(); 
     book.AddGrade(91); 
     book.AddGrade(89); 
     book.AddGrade(83.5f); 
     book.AddGrade(78); 
     book.AddGrade(98); 
     book.AddGrade(93); 
     book.AddGrade(79); 
     book.AddGrade(64); 
     book.AddGrade(32); 
     book.AddGrade(45); 
     book.AddGrade(67); 
     book.AddGrade(90); 
     book.AddGrade(58); 
     book.AddGrade(72); 
     book.AddGrade(100); 
     book.AddGrade(85);*/ 

     Console.WriteLine("Please go ahead and Listen to the Voice and input the Grades:"); 

     Gradebook inputValues = new Gradebook(); 
     inputValues.AddGrade(85); 
     inputValues.AddGrade(62);   


     GradeStatistics stats = inputValues.ComputeStatistics(); 
     //Console.WriteLine(stats.HighestGrade); 
     //Console.WriteLine(stats.AverageGrade); 
     //Console.WriteLine(stats.LowestGrade); 
     Console.WriteLine("The average for this person is {0} and the Highest grade he made is {1} and the Lowest is {2}. If you May please select any character to exit the program!", stats.AverageGrade, stats.HighestGrade, stats.LowestGrade); 

} 
} 

public class Gradebook 
{ 

    public Gradebook() 
    { 
     grades = new List<float>(); 
    } 

    public GradeStatistics ComputeStatistics() 
    { 
     GradeStatistics stats = new GradeStatistics(); 

     float sum = 0; 
     foreach (float grade in grades) 
     { 
      { 
       stats.HighestGrade = Math.Max(grade, stats.HighestGrade); 
       stats.LowestGrade = Math.Min(grade, stats.LowestGrade); 

       sum = sum + grade;     
      } 
     } 
     stats.AverageGrade = sum/grades.Count; 
     return stats; 
    } 

    public void AddGrade(float grade) 
    { 
     grades.Add(grade); 
    } 

    public List<float> grades;  
} 
+0

Es funktioniert gut. Aber ich möchte es schaffen, wo ich die Werte von der Konsole eingeben. Window. –

+0

Warum verwenden Sie einen Float für eine Note (die meisten Grad-Systeme haben mehrere Punkte pro Antwort, so dass es keine Notwendigkeit für eine teilweise oder eine .5.)? Ich würde das wahrscheinlich zu einem langen ändern, und Sie könnten Zeit sparen, indem Sie statische Klassen verwenden. Außerdem, nur Loop Shachaf sagte und ich würde verwenden; bool result = Int32.TryParse (Wert, aus Nummer); um sicherzustellen, dass Sie gültige Daten erhalten. – TGarrett

+0

Sie suchen nach etwas wie: 'var grade = Int32.Parse (Console.ReadLine());'? –

Antwort

0

Um Linie von der Konsole zu lesen und wandeln es Sie in Integer gelesen Zeile verwenden und die Zeichenfolge in numerische Darstellung konvertiert:

Console.Writeline("Enter Number"); 

var num = Convert.ToInt32(Console.ReadLine()); 

Sie tun dies in einer Schleife, bis Sie eine Art von terminierenden Eingabe vom Benutzer erhalten, z -1 Beispiel

+0

Ich habe das versucht, aber Sie können nur eine Note eingeben. Ich möchte es dort machen, wo ich 10 Noten eingib. Würde ich ein Array verwenden? –

+0

Sie haben bereits eine Liste innerhalb des Notenbuchs, fügen Sie einfach diese Eingabe num in das GradeBook ein, schauen Sie sich auch meine Antwort an, dies sollte innerhalb einer Schleife geschehen –

0

versuchen, diese

int num =10;// 
for (int i = 0; i < num; i++) 
{ 
Console.Writeline("Enter grade"); 
inputValues.AddGrade(Convert.ToInt32(Console.ReadLine())); 
} 
Verwandte Themen