演習 - エスケープされた文字シーケンスを使用して出力を書式設定する
この演習では、前の演習のコンソール出力を変更して、教師によって指定されたレポート形式を実現します。
コンソール出力の書式を設定する
このタスクでは、コードを更新して報告される出力の最終調整を行います。 最初に、教師によって指定された列ラベルを含むヘッダー行を追加します。 その後、文字エスケープ シーケンスを使って、情報の列の間にパディングを追加します。
.NET エディターで、各学生の現在のクラスのスコアと文字成績を表示するために使われる Console.WriteLine() ステートメントを見つけます。
Console.WriteLine()
ステートメントの上に新しい空白のコード行を作成します。作成した空白のコード行に、学生の成績のヘッダーを追加する次のコードを入力します。
Console.WriteLine("Student Grade\n");
テキストの末尾に
\n
を含めることに注意してください。 「C# で基本的な文字列を書式設定する」モジュールでは、\n
エスケープ文字シーケンスを使うと新しい行が作成されることを学習しました。 エスケープ シーケンスの場所が重要です。 この場合、\n
はコンソールに書き込む情報の末尾にあるため、"Student Grade" が表示された後に新しい行が追加されます。出力のテキスト列が揃うように書式を設定するには、次のように、単語の間のスペースを
\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
エスケープ シーケンスは、テキスト項目の間にタブ ストップを挿入します。 タブ ストップを追加することで、情報の列は左揃えになります。更新の結果を表示するには、[実行] を選びます。
アプリケーションの出力を次の出力と比較します。
Student Grade Sophia: 94.6 A Nicolas: 83.6 B Zahirah: 83.4 B Jeong: 95.4 A
空白文字の代わりにタブを使っているにもかかわらず、一部の行で学生の名前と数値スコアの間に十分な空白がないことに注意してください。
この違いは、タブの間隔を適用する方法が原因です。 タブ位置は 4 文字間隔で設定され、各タブでは次のタブ ストップの位置まで進みます。 5 文字の文字列の後にタブ エスケープ シーケンスが続く場合、エスケープ シーケンスは 8 文字の位置にあるタブ ストップまで進み、ギャップには空白文字が埋められて出力の空白が作成されます。 一方、7 文字の文字列の後にタブ エスケープ シーケンスが続く場合も、同じ場所まで進むことができます。 これにより、タブ エスケープ シーケンスは、次のタブ ストップ位置から離れるほど、より顕著になります。
最初の 2 つの列の間の空白がさらにはっきりするよう、次のように 2 つの短い学生名の後に
\t
をもう 1 つ追加します。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");
作業を確認する
このタスクでは、コードを実行して、出力が正しいことを検証します。
ご自分のコードを次と比較してください。
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");
コードを実行し、書式設定された出力を表示するには、[実行] を選びます。
コードが想定どおりに動作していることを確認するには、アプリケーションの出力を次の出力と比較します。
Student Grade Sophia: 94.6 A Nicolas: 83.6 B Zahirah: 83.4 B Jeong: 95.4 A
コードによって表示される結果が異なる場合は、コードを確認し、エラーを見つけて更新する必要があります。 コードをもう一度実行して、問題が修正されたかどうかを確認します。 コードで予期される結果が得られるまで、コードの更新と実行を続けます。