演習 - エスケープされた文字シーケンスを使用して出力を書式設定する
この演習では、前の演習のコンソール出力を変更して、指定されたレポート形式を実現します。
コンソール出力の書式を設定する
このタスクでは、コードを更新して報告される出力の最終調整を行います。 最初に、学生の名前が含まれるようにし、列ラベルを含むヘッダー行を追加します。 その後、文字エスケープ シーケンスを使って、情報の列の間にパディングを追加します。
.NET エディターで、学生のコースの情報を表示するために使われる Console.WriteLine() ステートメントを見つけます。
Console.WriteLine() ステートメントの上に、空白のコード行を作成します。
作成した空白のコード行に、学生の名前を追加する次のコードを入力します。
Console.WriteLine($"Student: {studentName}\n");
テキストの末尾に
\n
を含めることに注意してください。 「C# で基本的な文字列を書式設定する」モジュールでは、\n
エスケープ文字シーケンスを使うと新しい行が作成されることを学習しました。 エスケープ シーケンスの場所が重要です。 この場合、\n
はコンソールに書き込む情報の末尾にあるため、"Student Name" が表示された後に新しい行が追加されます。前の Console.WriteLine() ステートメントの後に、空白のコード行を作成します。
作成した空白のコード行に、コース情報のヘッダーを追加する次のコードを入力します。
Console.WriteLine("Course\t\t\t\tGrade\tCredit Hours");
コース名の後に 4 つのタブが追加されていることに注意してください。 タブ ストップを追加すると、長いコース名のための余分なスペースができます。
出力のテキスト列が揃うように書式を設定するには、次のように、単語の間のスペースを
\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
コードによって表示される結果が異なる場合は、コードを確認し、エラーを見つけて更新する必要があります。 コードをもう一度実行して、問題が修正されたかどうかを確認します。 コードで予期される結果が得られるまで、コードの更新と実行を続けます。