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

已完成

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

设置控制台输出的格式

在此任务中,你将更新代码,以完善报告的输出。 首先,添加一个标题行,其中包含教师指定的列标签。 之后,你将使用字符转义序列在信息列之间添加额外的填充。

  1. 在 .NET 编辑器中,找到用于显示每个学生的当前课堂分数和字母成绩的 Console.WriteLine() 语句。

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

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

    Console.WriteLine("Student Grade\n");
    

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

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

    Console.WriteLine("Student\tGrade\n");
    Console.WriteLine("Sophia:\t" + sophiaScore + "\tA");
    Console.WriteLine("Nicolas:\t" + nicolasScore + "\tB");
    Console.WriteLine("Zahirah:\t" + zahirahScore + "\tB");
    Console.WriteLine("Jeong:\t" + jeongScore + "\tA");
    

    \t 转义序列将在文本项之间插入制表位。 添加该制表位会生成左对齐的信息列。

  5. 若要查看更新的结果,请选择“ 运行”。

  6. 将应用程序的输出与以下输出进行比较:

    Student	Grade
    
    Sophia: 94.6    A
    Nicolas:    83.6    B
    Zahirah:    83.4    B
    Jeong:  95.4    A
    
  7. 请注意,尽管使用制表符而不是空格字符,但某些行在学生的姓名和数字分数之间仍然没有太大的空格。

    这种差异是由于应用制表符间距的方式造成的。 制表位以四个字符的间隔设置,每个制表位将前进到下一个制表位。 如果有一个包含五个字符的字符串,后跟一个制表位转义序列,该转义序列将前进到八字符位置的制表位,用空格字符填充空白以在输出中创建空格。 但如果有一个包含七个字符的字符串,后跟一个制表位转义序列,可以前进到同一位置。 由此,制表位转义序列在从下一个制表位继续前进时更明显。

  8. 若要使前两列之间的空格更加明显,请在两个较短的学生姓名后面添加另一个 \t 空格,如下所示:

    Console.WriteLine("Student\t\tGrade\n");
    Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA");
    Console.WriteLine("Nicolas:\t" + nicolasScore + "\tB");
    Console.WriteLine("Zahirah:\t" + zahirahScore + "\tB");
    Console.WriteLine("Jeong:\t\t" + jeongScore + "\tA");
    

检查你的工作

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

  1. 将代码与以下内容进行比较:

    int currentAssignments = 5;
    
    int sophia1 = 93;
    int sophia2 = 87;
    int sophia3 = 98;
    int sophia4 = 95;
    int sophia5 = 100;
    
    int nicolas1 = 80;
    int nicolas2 = 83;
    int nicolas3 = 82;
    int nicolas4 = 88;
    int nicolas5 = 85;
    
    int zahirah1 = 84;
    int zahirah2 = 96;
    int zahirah3 = 73;
    int zahirah4 = 85;
    int zahirah5 = 79;
    
    int jeong1 = 90;
    int jeong2 = 92;
    int jeong3 = 98;
    int jeong4 = 100;
    int jeong5 = 97;
    
    int sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5;
    int nicolasSum = nicolas1 + nicolas2 + nicolas3 + nicolas4 + nicolas5;
    int zahirahSum = zahirah1 + zahirah2 + zahirah3 + zahirah4 + zahirah5;
    int jeongSum = jeong1 + jeong2 + jeong3 + jeong4 + jeong5;
    
    decimal sophiaScore = (decimal) sophiaSum / currentAssignments;
    decimal nicolasScore = (decimal) nicolasSum / currentAssignments;
    decimal zahirahScore = (decimal) zahirahSum / currentAssignments;
    decimal jeongScore = (decimal) jeongSum / currentAssignments;
    
    Console.WriteLine("Student\t\tGrade\n");
    Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA");
    Console.WriteLine("Nicolas:\t" + nicolasScore + "\tB");
    Console.WriteLine("Zahirah:\t" + zahirahScore + "\tB");
    Console.WriteLine("Jeong:\t\t" + jeongScore + "\tA");
    
  2. 若要运行代码并显示格式化的输出,请选择“ 运行”。

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

    Student     Grade
    
    Sophia:     94.6    A
    Nicolas:    83.6    B
    Zahirah:    83.4    B
    Jeong:      95.4    A
    

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