Esercizio - Formattare l'output usando sequenze di caratteri di escape
In questo esercizio si modificherà l'output della console dell'esercizio precedente per ottenere il formato di report specificato.
Formattare l'output della console
In questa attività si aggiornerà il codice per applicare i ritocchi finali all'output segnalato. Si inizierà includendo il nome dello studente e aggiungendo una riga di intestazione che include le etichette di colonna. Successivamente, si useranno sequenze di escape dei caratteri per aggiungere ulteriore riempimento tra le colonne di informazioni.
Nell'editor .NET individuare le istruzioni Console.WriteLine() usate per visualizzare le informazioni sul corso dello studente.
Creare una riga di codice vuota sopra le istruzioni Console.WriteLine().
Nella riga di codice vuota creata, per aggiungere il nome dello studente, immettere il codice seguente:
Console.WriteLine($"Student: {studentName}\n");
Si noti che si sta includendo
\n
alla fine del testo. Nel modulo "Eseguire la formattazione di stringa di base con C#" si è appreso che la sequenza di caratteri di escape\n
causerà la creazione di una nuova riga. La posizione della sequenza di escape è importante. In questo caso, l’oggetto\n
si trova alla fine delle informazioni che si desidera scrivere nella console, quindi la nuova riga verrà aggiunta dopo la visualizzazione di "Nome studente".Creare una riga di codice vuota dopo l'istruzione Console.WriteLine() precedente.
Nella riga di codice vuota creata, per aggiungere un'intestazione per le informazioni sul corso, immettere il codice seguente:
Console.WriteLine("Course\t\t\t\tGrade\tCredit Hours");
Si noti che si aggiungono quattro tabulazioni dopo il nome del corso. Le tabulazioni aggiuntive offriranno spazio supplementare per i nomi di corsi più lunghi.
Per formattare l'output come colonne di testo allineate, sostituire gli spazi tra le parole con la sequenza di escape
\t
come indicato di seguito: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}");
La sequenza di escape
\t
inserirà una tabulazione tra gli elementi di testo. Queste interruzioni di tabulazione dovrebbero generare colonne di informazioni allineate a sinistra.Si noti che si riduce il numero di tabulazioni per
course4Name
ecourse5Name
. Questa differenza è dovuta al fatto che i nomi dei corsi sono più lunghi degli altri. Nel passaggio precedente sono state aggiunte tabulazioni aggiuntive dopo la colonna del nome del corso per mantenere la spaziatura coerente per i nomi dei corsi lunghi e brevi.Per aggiungere la spaziatura interna all'output finale del risultato dell'oggetto Criteri di gruppo, aggiornare il codice come indicato di seguito:
Console.WriteLine($"\nFinal GPA:\t\t\t {leadingDigit}.{firstDigit}{secondDigit}");
Controllare il lavoro svolto
In questa attività si eseguirà il codice e si verificherà che l'output sia corretto.
Verificare che il codice sia simile al seguente:
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}");
Per eseguire il codice e visualizzare l'output formattato, selezionare Esegui.
Per verificare che il codice funzioni come previsto, confrontare l'output dell'applicazione con l'output seguente:
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
Se il codice visualizza risultati diversi, è necessario esaminarlo per trovare l'errore e apportare aggiornamenti. Eseguire di nuovo il codice per verificare se il problema è stato risolto. Continuare ad aggiornare ed eseguire il codice fino a quando non produce i risultati previsti.