Ćwiczenie — formatowanie danych wyjściowych przy użyciu sekwencji znaków ucieczki

Ukończone

W tym ćwiczeniu zmodyfikujesz dane wyjściowe konsoli z poprzedniego ćwiczenia, aby osiągnąć określony format raportowania.

Formatowanie danych wyjściowych konsoli

W tym zadaniu zaktualizujesz kod, aby zastosować akcenty końcowe do zgłoszonych danych wyjściowych. Zaczniesz od dodania nazwy ucznia i dodania wiersza nagłówka zawierającego etykiety kolumn. Następnie użyjesz sekwencji ucieczki znaków, aby dodać dodatkowe dopełnienie między kolumnami informacji.

  1. W edytorze .NET znajdź instrukcje Console.WriteLine(), które są używane do wyświetlania informacji o kursie ucznia.

  2. Utwórz pusty wiersz kodu powyżej instrukcji Console.WriteLine().

  3. W pustym wierszu kodu, który został utworzony, aby dodać nazwę ucznia, wprowadź następujący kod:

    Console.WriteLine($"Student: {studentName}\n");
    
    

    Zwróć uwagę, że dołączasz \n tekst na końcu tekstu. W module "Wykonywanie podstawowego formatowania ciągów za pomocą języka C#" dowiedzieliśmy się, że \n sekwencja znaków ucieczki spowoduje utworzenie nowego wiersza. Lokalizacja sekwencji ucieczki jest ważna. W takim przypadku element \n znajduje się na końcu informacji, które chcesz zapisać w konsoli, więc nowy wiersz zostanie dodany po wyświetleniu komunikatu "Nazwa ucznia".

  4. Utwórz pusty wiersz kodu po poprzedniej instrukcji Console.WriteLine().

  5. W pustym wierszu kodu, który został utworzony, aby dodać nagłówek informacji o kursie, wprowadź następujący kod:

    Console.WriteLine("Course\t\t\t\tGrade\tCredit Hours");
    
    

    Zwróć uwagę, że dodajesz cztery karty po nazwie kursu. Dodatkowe zatrzymanie karty pozwoli na dodatkowe miejsce dla dłuższych nazw kursów.

  6. Aby sformatować dane wyjściowe jako wyrównane kolumny tekstu, zastąp \t spacje między wyrazami sekwencją ucieczki w następujący sposób:

    Console.WriteLine($"{course1Name}\t\t\t{course1Grade}\t\t{course1Credit}");
    Console.WriteLine($"{course2Name}\t\t\t{course2Grade}\t\t{course2Credit}");
    Console.WriteLine($"{course3Name}\t\t\t{course3Grade}\t\t{course3Credit}");
    Console.WriteLine($"{course4Name}\t{course4Grade}\t\t{course4Credit}");
    Console.WriteLine($"{course5Name}\t\t{course5Grade}\t\t{course5Credit}");
    
    

    Sekwencja \t ucieczki wstawi zatrzymanie karty między elementami tekstowym. Ta karta powinna spowodować wyrównanie do lewej kolumn informacji.

    Zwróć uwagę, że zmniejszasz liczbę kart dla course4Name elementów i course5Name. Ta różnica polega na tym, że nazwy tych kursów są dłuższe niż pozostałe. W poprzednim kroku dodano dodatkowe karty po kolumnie nazwy kursu, aby zachować spójność odstępów zarówno dla długich, jak i krótkich nazw kursów.

  7. Aby dodać dopełnienie do końcowych danych wyjściowych wyników gpA, zaktualizuj kod w następujący sposób:

    Console.WriteLine($"\nFinal GPA:\t\t\t {leadingDigit}.{firstDigit}{secondDigit}");
    
    

Sprawdź swoją pracę

W tym zadaniu uruchomisz kod i sprawdzisz, czy dane wyjściowe są poprawne.

  1. Sprawdź, czy kod jest podobny do następującego:

    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($"Student: {studentName}\n");
    Console.WriteLine("Course\t\t\t\tGrade\tCredit Hours");
    
    Console.WriteLine($"{course1Name}\t\t\t{course1Grade}\t\t{course1Credit}");
    Console.WriteLine($"{course2Name}\t\t\t{course2Grade}\t\t{course2Credit}");
    Console.WriteLine($"{course3Name}\t\t\t{course3Grade}\t\t{course3Credit}");
    Console.WriteLine($"{course4Name}\t{course4Grade}\t\t{course4Credit}");
    Console.WriteLine($"{course5Name}\t\t{course5Grade}\t\t{course5Credit}");
    
    Console.WriteLine($"\nFinal GPA:\t\t\t {leadingDigit}.{firstDigit}{secondDigit}");
    
  2. Aby uruchomić kod i wyświetlić sformatowane dane wyjściowe, wybierz pozycję Uruchom.

  3. Aby sprawdzić, czy kod działa zgodnie z oczekiwaniami, porównaj dane wyjściowe aplikacji z następującymi danymi wyjściowymi:

    Student: Sophia Johnson
    
    Course              Grade   Credit Hours	
    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
    

    Jeśli kod wyświetla różne wyniki, musisz przejrzeć kod, aby znaleźć błąd i wprowadzić aktualizacje. Uruchom ponownie kod, aby sprawdzić, czy problem został rozwiązany. Kontynuuj aktualizowanie i uruchamianie kodu, dopóki kod nie generuje oczekiwanych wyników.