練習 - 使用逸出字元序列來將輸出格式化
在本練習中,您將修改上一個練習中的主控台輸出,以達到指定的報告格式。
格式化主控台輸出
在這項工作中,您將更新程式碼,以將最後的潤飾套用至報告輸出。 首先,您會包含學生的名稱,並新增包含資料行標籤的標頭資料列。 然後,您將使用字元逸出序列,在資訊行之間新增額外的填補。
在 .NET 編輯器中,找出用來顯示學生課程資訊的 Console.WriteLine() 陳述式。
在 Console.WriteLine() 陳述式上方建立空白的程式碼行。
在您建立的空白程式碼行上,若要新增學生的名稱,請輸入下列程式碼:
Console.WriteLine($"Student: {studentName}\n");
請注意,您會在文字結尾包含
\n
。 在「使用 C# 執行基本字串格式化」課程模組中,您已了解\n
逸出字元序列會導致建立新的一行。 逸出序列的位置很重要。 在此情況下,\n
位於您想寫入主控台的資訊尾端,因此會在顯示「學生名稱」之後新增新行。在上一個 Console.WriteLine() 陳述式之後建立空白程式碼行。
在您建立的空白程式碼行上,若要新增課程資訊的標頭,請輸入下列程式碼:
Console.WriteLine("Course\t\t\t\tGrade\tCredit Hours");
請注意,您會在課程名稱後面新增四個定位點。 額外的定位停駐點會將額外的空間留給較長的課程名稱。
若要將輸出格式化為文字的對齊資料行,請以
\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
逸出序列會在文字項目之間插入定位停駐點。 這些定位停駐點應會導致靠左對齊的資訊行。請注意,您會減少
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
如果您的程式碼顯示不同的結果,您必須檢閱程式碼以尋找錯誤並進行更新。 再次執行程式碼,查看您是否已修正此問題。 請繼續更新和執行程式碼,直到其產生預期的結果為止。