练习 - 使用转义字符序列设置输出格式

已完成

在本练习中,你将修改上一练习中的控制台输出,以实现指定的报告格式。

设置控制台输出的格式

在此任务中,你将更新代码,对报告的输出执行收尾工作。 首先,包括学生的姓名并添加包含列标签的标题行。 之后,你将使用字符转义序列在信息列之间添加额外的填充。

  1. 在 .NET 编辑器中,找到用于显示学生课程信息的 Console.WriteLine() 语句。

  2. 在 Console.WriteLine() 语句上方创建空白代码行。

  3. 在创建的空白代码行上,若要添加学生的姓名,请输入以下代码:

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

    请注意,文本末尾要包含 \n 内容。 在“使用 C# 执行基本字符串格式设置”模块中,你了解到 \n 转义字符序列将导致创建新行。 转义序列的位置非常重要。 在本例中,\n 位于要写入控制台的信息的末尾,因此将在显示“学生姓名”后添加新行。

  4. 在上一个 Console.WriteLine() 语句之后创建一个空白代码行。

  5. 在创建的空白代码行上,若要添加课程信息的标题,请输入以下代码:

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

    请注意,你要在课程名称后面添加四个制表符。 额外的制表位将为较长的课程名称留出额外的空间。

  6. 若要将输出的格式设置为对齐的文本列,请将单词之间的空格替换为 \t 转义序列,如下所示:

    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 转义序列将在文本项之间插入制表位。 这些制表位应该会生成左对齐的信息列。

    请注意,减少 course4Namecourse5Name 的制表符数。 这种差异是因为这些课程名称比其他课程名称长。 在上一步中,你在课程名称列后面添加了额外的制表符,使长短课程名称的间距保持一致。

  7. 若要向最终 GPA 结果输出添加填充,请更新代码,如下所示:

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

检查工作

在此任务中,运行代码并验证输出是否正确。

  1. 检查代码是否如下所示:

    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. 若要运行代码并显示格式化输出,请选择“运行”

  3. 要验证代码是否按预期工作,请将应用程序的输出与以下输出进行比较:

    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
    

    如果代码显示不同的结果,则需要查看代码以查找错误并进行更新。 再次运行代码以查看是否已解决问题。 继续更新和运行代码,直到代码生成预期结果。