Упражнение. Форматирование выходных данных с помощью escape-последовательностей символов
В этом упражнении вы измените выходные данные консоли из предыдущего упражнения, чтобы достичь указанного формата отчетов.
Форматирование выходных данных консоли
В этой задаче вы обновите код, чтобы применить завершающие касания к отчетным выходным данным. Сначала вы добавите имя учащегося и добавьте строку заголовка, содержащую метки столбцов. После этого вы будете использовать escape-последовательности символов, чтобы добавить дополнительное заполнение между столбцами информации.
В редакторе .NET найдите инструкции Console.WriteLine(), которые используются для отображения сведений о курсе учащегося.
Создайте пустую строку кода над операторами Console.WriteLine().
Чтобы добавить имя учащегося, введите следующий код в пустой строке кода, созданной вами.
Console.WriteLine($"Student: {studentName}\n");
Обратите внимание, что вы включаете
\n
в конец текста. В модуле "Выполнение базового форматирования строк с помощью C#" вы узнали, что\n
последовательность escape-символов приведет к созданию новой строки. Важно расположение escape-последовательности. В этом случае в конце сведений,\n
которые требуется записать в консоль, будет добавлена новая строка после отображения имени учащегося.Создайте пустую строку кода после предыдущей инструкции Console.WriteLine().
В созданной пустой строке кода, чтобы добавить заголовок для сведений о курсе, введите следующий код:
Console.WriteLine("Course\t\t\t\tGrade\tCredit Hours");
Обратите внимание, что вы добавляете четыре вкладки после имени курса. На дополнительных вкладках будет разрешено дополнительное пространство для более длинных имен курсов.
Чтобы отформатировать выходные данные в виде выровненных столбцов текста, замените пробелы между словами
\t
escape-последовательностью следующим образом: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}");
\t
Escape-последовательность вставляет остановку табуляции между текстовыми элементами. Эти остановки табуляции должны привести к выравниванию по левому краю столбцов сведений.Обратите внимание, что вы сокращаете количество вкладок и
course4Name
course5Name
. Это различие связано с тем, что имена этих курсов длиннее, чем другие. На предыдущем шаге вы добавили дополнительные вкладки после столбца имени курса, чтобы обеспечить согласованность интервалов как для длинных, так и коротких имен курсов.Чтобы добавить заполнение в окончательный результат GPA, обновите код следующим образом:
Console.WriteLine($"\nFinal GPA:\t\t\t {leadingDigit}.{firstDigit}{secondDigit}");
Проверка работы
В этой задаче вы запустите код и убедитесь, что выходные данные верны.
Убедитесь, что код аналогичен следующему:
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}");
Чтобы запустить код и отобразить отформатированные выходные данные, нажмите кнопку "Выполнить".
Чтобы убедиться, что код работает должным образом, сравните выходные данные приложения со следующими выходными данными:
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
Если код отображает различные результаты, необходимо просмотреть код, чтобы найти ошибку и внести обновления. Запустите код еще раз, чтобы узнать, устранена ли проблема. Продолжайте обновлять и запускать код, пока код не выдает ожидаемые результаты.