Übung: Formatieren der Dezimalausgabe

Abgeschlossen

In dieser Übung berechnen Sie den endgültige Notendurchschnitt und ändern die Konsolenausgabe, um das gewünschte Berichtsformat zu erzielen. Der Notendurchschnitt entspricht der Summe der Gesamtnotenpunkte dividiert durch die Summe der gesamten Guthabenstunden.

Berechnen des endgültigen Notendurchschnitts

  1. Suchen Sie im .NET-Editor nach den Console.WriteLine()-Anweisungen, die zum Anzeigen der Kursinformationen verwendet werden.

  2. Entfernen Sie den folgenden Code aus der vorherigen Übung:

    Console.WriteLine($"{totalGradePoints} {totalCreditHours}");
    

    Da Sie sich vergewissert haben, dass Ihre Werte richtig sind, wird diese Zeile nicht mehr benötigt.

  3. Erstellen Sie eine leere Codezeile über den Console.WriteLine()-Anweisungen.

  4. Geben Sie in der von Ihnen erstellten leeren Codezeile den folgenden Code ein, um eine Variable zu initialisieren, in der der endgültige Notendurchschnitt gespeichert wird:

    decimal gradePointAverage = totalGradePoints/totalCreditHours;
    
    
  5. Nehmen Sie sich einen Moment Zeit, um die Datentypen zu Analysieren, die Sie dividieren werden.

    Wenn das Ergebnis einer Division ein Dezimalwert sein soll, muss entweder der Dividend oder der Divisor (oder beide) vom Typ „decimal“ sein. Wenn Sie bei der Berechnung Integer-Variablen verwenden, müssen Sie den Umwandlungsoperator verwenden, um ein Integer vorübergehend in eine Dezimalzahl zu konvertieren.

  6. Um einen Dezimalwert aus der Division abzurufen, aktualisieren Sie Ihren Code wie folgt:

    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    
  7. Navigieren Sie zur letzten Console.WriteLine()-Anweisung, und erstellen Sie nach der letzten Anweisung eine neue leere Codezeile.

  8. Geben Sie zum Anzeigen des endgültigen Notendurchschnitts den folgenden Code ein:

    Console.WriteLine($"Final GPA: {gradePointAverage}");
    
  9. Wählen Sie Ausführen aus, um die Ergebnisse anzuzeigen.

    Vergleichen Sie die Ausgabe Ihrer Anwendung mit der folgenden Ausgabe:

    English 101 4 3
    Algebra 101 3 3
    Biology 101 3 4
    Computer Science I 3 4
    Psychology 101 4 3
    Final GPA: 3.3529411764705882352941176471
    

Formatieren der Dezimalausgabe

Möglicherweise haben Sie bemerkt, dass das Dezimalergebnis viel mehr Stellen aufweist als ein Standardnotendurchschnitt. In dieser Aufgabe ändern Sie den Dezimalwert des Notendurchschnitts so, dass nur drei Stellen angezeigt werden.

Letztendlich möchten Sie die erste Stelle des Notendurchschnitts anzeigen, anschließend ein Dezimaltrennzeichen und dann die ersten beiden Stellen nach dem Dezimaltrennzeichen. Sie können dieses Format erreichen, indem Sie Variablen verwenden, in denen Sie die erste und die nachfolgenden Stellen speichern, die Sie dann mithilfe von Console.WriteLine() zusammen ausgeben. Sie können die gelernten Rechenvorgänge verwenden, um die Vor- und Nachkommastellen zu extrahieren.

Hinweis

Im Laufe Ihrer Entwicklung werden Sie integrierte Vorgänge entdecken, mit denen Sie automatisch Formatierungen auf Ihre Daten anwenden können. Für den Moment ist dies eine gute Gelegenheit, das bisher Gelernte zu festigen.

  1. Navigieren Sie zum Anfang der Console.WriteLine()-Anweisungen.

  2. Erstellen Sie eine leere Codezeile über den Console.WriteLine()-Anweisungen.

  3. Geben Sie in der von Ihnen erstellten leeren Codezeile den folgenden Code ein, um eine Variable zu initialisieren, in der die erste Stelle des Notendurchschnitts gespeichert wird:

    int leadingDigit = (int) gradePointAverage;
    
    

    Beachten Sie, dass Sie sie in einen Integer-Wert umwandeln, um die führende Stelle aus der Dezimalzahl zu extrahieren. Dies ist eine einfache und zuverlässige Methode, da das Ergebnis Bruchwerte bei der Umwandlung von Bruchwerten nie aufrundet wird. Das bedeutet, wenn der Notendurchschnitt 2,99 ist, führt das Umwandeln des Dezimalwerts in ein Integer zum Ergebnis 2.

  4. Geben Sie den folgenden Code ein, um eine Variable zu initialisieren, in der die ersten beiden Stellen nach dem Dezimaltrennzeichen gespeichert werden:

    int firstDigit = (int) (gradePointAverage * 10) % 10;
    

    In der ersten Hälfte dieses Vorgangs verschieben Sie den Dezimalwert um eine Stelle nach rechts und wandeln ihn in eine ganze Zahl um. In der zweiten Hälfte verwenden Sie den Rest- oder Modulo-Operator, um den Rest der Division durch 10 zu erhalten, wodurch die letzte Ziffer der ganzen Zahl isoliert wird. Ein Beispiel:

    Beim Wert gradePointAverage = 2.994573 würde das Ausführen des Vorgangs die folgenden Schritten erfordern:

    int firstDigit = (int) (2.994573 * 10) % 10;
    int firstDigit = 29 % 10;
    int firstDigit = 9;
    

    Und der resultierende Wert von firstDigit lautet 9.

    Als Nächstes wenden Sie den gleichen Vorgang an, um die zweite Ziffer abzurufen.

  5. Geben Sie in einer neuen leeren Codezeile den folgenden Code ein:

    int secondDigit = (int) (gradePointAverage * 100 ) % 10;
    

    In dieser Zeile verschieben Sie die Dezimalstelle um zwei Stellen und verwenden den Modulo-Operator, um die letzte Ziffer zu ermitteln.

  6. Um die Ausgabe des endgültigen Notendurchschnitts zu korrigieren, aktualisieren Sie die letzte Console.WriteLine()-Anweisung wie folgt:

    Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
    

Überprüfen Ihrer Arbeit

In dieser Aufgabe führen Sie den Code aus und überprüfen, ob die Ausgabe korrekt ist.

  1. Vergewissern Sie sich, dass Ihr Code dem folgenden ähnelt:

    string studentName = "Sophia Johnson";
    string course1Name = "English 101";
    string course2Name = "Algebra 101";
    string course3Name = "Biology 101";
    string course4Name = "Computer Science I";
    string course5Name = "Psychology 101";
    
    int course1Credit = 3;
    int course2Credit = 3;
    int course3Credit = 4;
    int course4Credit = 4;
    int course5Credit = 3;
    
    int gradeA = 4;
    int gradeB = 3;
    
    int course1Grade = gradeA;
    int course2Grade = gradeB;
    int course3Grade = gradeB;
    int course4Grade = gradeB;
    int course5Grade = gradeA;
    
    int totalCreditHours = 0;
    totalCreditHours += course1Credit;
    totalCreditHours += course2Credit;
    totalCreditHours += course3Credit;
    totalCreditHours += course4Credit;
    totalCreditHours += course5Credit;
    
    int totalGradePoints = 0;
    totalGradePoints += course1Credit * course1Grade;
    totalGradePoints += course2Credit * course2Grade;
    totalGradePoints += course3Credit * course3Grade;
    totalGradePoints += course4Credit * course4Grade;
    totalGradePoints += course5Credit * course5Grade;
    
    decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
    
    int leadingDigit = (int) gradePointAverage;
    int firstDigit = (int) (gradePointAverage * 10 ) % 10;
    int secondDigit = (int) (gradePointAverage * 100 ) % 10;
    
    Console.WriteLine($"{course1Name} {course1Grade} {course1Credit}");
    Console.WriteLine($"{course2Name} {course2Grade} {course2Credit}");
    Console.WriteLine($"{course3Name} {course3Grade} {course3Credit}");
    Console.WriteLine($"{course4Name} {course4Grade} {course4Credit}");
    Console.WriteLine($"{course5Name} {course5Grade} {course5Credit}");
    
    Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
    
  2. Wählen Sie Ausführen aus, um den Code auszuführen und die formatierte Ausgabe anzuzeigen.

  3. Um zu überprüfen, ob Ihr Code wie erwartet funktioniert, vergleichen Sie die Ausgabe Ihrer Anwendung mit der folgenden Ausgabe:

    English 101 4 3
    Algebra 101 3 3
    Biology 101 3 4
    Computer Science I 3 4
    Psychology 101 4 3
    Final GPA: 3.35
    

    Wenn Ihr Code unterschiedliche Ergebnisse anzeigt, müssen Sie ihn überprüfen, um den Fehler zu finden und Aktualisierungen vorzunehmen. Führen Sie den Code erneut aus, um festzustellen, ob Sie das Problem behoben haben. Fahren Sie mit dem Aktualisieren und Ausführen Ihres Codes fort, bis der Code die erwarteten Ergebnisse generiert.

Wichtig

Löschen Sie auf keinen Fall den Code, den Sie bisher geschrieben haben. Die nächste Übung baut auf diesem Code auf.