Ćwiczenie — formatowanie danych wyjściowych dziesiętnych
W tym ćwiczeniu obliczysz końcowe gpA i zmodyfikujesz dane wyjściowe konsoli, aby uzyskać żądany format raportowania. GpA jest równa sumie wszystkich punktów klasy podzielonej przez sumę łącznej liczby godzin kredytowych.
Obliczanie końcowego gpA
W edytorze .NET znajdź instrukcje Console.WriteLine(), które są używane do wyświetlania informacji o kursie.
Usuń następujący kod z poprzedniego ćwiczenia:
Console.WriteLine($"{totalGradePoints} {totalCreditHours}");
Ponieważ zweryfikowano, że wartości są poprawne, ten wiersz nie jest już potrzebny.
Utwórz pusty wiersz kodu powyżej instrukcji Console.WriteLine().
W pustym wierszu kodu, który został utworzony, aby zainicjować zmienną, która będzie przechowywać ostateczną gpA, wprowadź następujący kod:
decimal gradePointAverage = totalGradePoints/totalCreditHours;
Pośmiń chwilę na rozważenie podzielonych typów danych.
Jeśli chcesz, aby wynik obliczenia podziału był wartością dziesiętną, dywidenda lub dzielnika musi być typu dziesiętna (lub oba). W przypadku używania zmiennych całkowitych w obliczeniach należy użyć operatora rzutowania, aby tymczasowo przekonwertować liczbę całkowitą na liczbę dziesiętną.
Aby pobrać wartość dziesiętną z dzielenia, zaktualizuj kod w następujący sposób:
decimal gradePointAverage = (decimal) totalGradePoints/totalCreditHours;
Przejdź do ostatniej instrukcji Console.WriteLine() i utwórz nowy pusty wiersz kodu po ostatniej instrukcji.
Aby wyświetlić końcowe gpA, wprowadź następujący kod:
Console.WriteLine($"Final GPA: {gradePointAverage}");
Aby wyświetlić wyniki, wybierz pozycję Uruchom.
Porównaj dane wyjściowe aplikacji z następującymi danymi wyjściowymi:
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
Formatowanie danych wyjściowych dziesiętnych
Być może zauważysz, że wynik dziesiętny zawiera o wiele więcej cyfr niż standardowe gpA. W tym zadaniu manipulujesz wartością gpA dziesiętną, aby wyświetlić tylko trzy cyfry.
Ostatecznie chcesz wyświetlić pierwszą cyfrę GPA, punkt dziesiętny, a następnie dwie pierwsze cyfry po przecinku dziesiętnym. Ten format można osiągnąć, używając zmiennych do przechowywania odpowiednio cyfr wiodących i końcowych, a następnie drukowania ich razem przy użyciu metody Console.WriteLine(). Możesz użyć poznanych operacji matematycznych, aby wyodrębnić cyfry wiodące i końcowe.
Uwaga
W miarę kontynuowania pracy dewelopera odkryjesz wbudowane operacje, które mogą automatycznie stosować formatowanie do danych. Na razie jest to świetna okazja, aby umocnić to, czego nauczyłeś się do tej pory.
Przejdź do góry instrukcji Console.WriteLine().
Utwórz pusty wiersz kodu powyżej instrukcji Console.WriteLine().
W pustym wierszu kodu, który został utworzony, aby zainicjować zmienną, która będzie przechowywać wiodącą cyfrę gpA, wprowadź następujący kod:
int leadingDigit = (int) gradePointAverage;
Zwróć uwagę, że aby wyodrębnić cyfrę wiodącą z liczby dziesiętnej, rzutujesz ją na wartość całkowitą. Jest to prosta i niezawodna metoda, ponieważ rzutowanie wartości ułamkowej nigdy nie zaokrągli wyniku. Oznacza to, że jeśli gpA ma wartość 2,99, rzutowanie wartości dziesiętnej na int spowoduje 2.
Aby zainicjować zmienną, która będzie przechowywać pierwsze dwie cyfry po przecinku, wprowadź następujący kod:
int firstDigit = (int) (gradePointAverage * 10) % 10;
W pierwszej połowie tej operacji przenosisz jedno miejsce dziesiętne po prawej stronie i rzutujesz ją na liczbę całkowitą. W drugiej połowie użyjesz pozostałego operatora lub modulo, aby uzyskać pozostałą część dzielenia o 10, co izoluje ostatnią cyfrę w liczbą całkowitą. Oto przykład:
Załóżmy, że
gradePointAverage = 2.994573
wykonanie operacji na tych wartościach spowoduje wykonanie następujących kroków:int firstDigit = (int) (2.994573 * 10) % 10; int firstDigit = 29 % 10; int firstDigit = 9;
Wynikowa wartość
firstDigit
to 9.Następnie zastosujesz tę samą operację, aby pobrać drugą cyfrę.
W nowym pustym wierszu kodu wprowadź następujący kod:
int secondDigit = (int) (gradePointAverage * 100 ) % 10;
W tym wierszu przeniesiesz dwa miejsca dziesiętne i użyjesz operatora modulo, aby pobrać ostatnią cyfrę.
Aby poprawić końcowe dane wyjściowe gpA, zaktualizuj ostatnią instrukcję Console.WriteLine() w następujący sposób:
Console.WriteLine($"Final GPA: {leadingDigit}.{firstDigit}{secondDigit}");
Sprawdź swoją pracę
W tym zadaniu uruchomisz kod i sprawdzisz, czy dane wyjściowe są poprawne.
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($"{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}");
Aby uruchomić kod i wyświetlić sformatowane dane wyjściowe, wybierz pozycję Uruchom.
Aby sprawdzić, czy kod działa zgodnie z oczekiwaniami, porównaj dane wyjściowe aplikacji z następującymi danymi wyjściowymi:
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.
Ważne
Pamiętaj, aby nie usunąć żadnego z napisanych do tej pory kodu. W następnym ćwiczeniu utworzysz ten kod.