Exercițiul - Adăugați date sugerate despre donații
În acest pas al procesului de dezvoltare, actualizați codul furnizat în folderul proiectului starter, adăugând caracteristici pentru "donație sugerată" la aplicație. Fișierul project.cs starter ar trebui să fie deschis în Visual Studio Code. Reveniți la unitatea de pregătire anterioară dacă aveți nevoie de instrucțiuni pentru a începe.
Creați caracteristicile "Donație sugerată"
Caracteristicile de donație adăugate necesită crearea suggestedDonation variabilei și extinderea matricei ourAnimals cuprinde noile date de donație. De asemenea, trebuie să adăugați sumele sugerate de donații pentru fiecare animal și să implementați o sumă implicită atunci când lipsesc informații despre donații sugerate.
Adăugați asistență pentru datele sugerate despre donații
Trebuie să creați o variabilă nouă pentru a reține donațiile sugerate și a extinde matricea ourAnimals pentru a păstra datele noi.
Observați codul de sub comentariul nr. 1 care declară variabilele utilizate pentru popularea matricei
ourAnimalspentru fiecare animal.Trebuie să declarați alta
stringpentru datele sugerate despre donații.// #1 the ourAnimals array will store the following: string animalSpecies = ""; string animalID = ""; string animalAge = ""; string animalPhysicalDescription = ""; string animalPersonalityDescription = ""; string animalNickname = "";Creați variabila
suggestedDonationsub declarația pentruanimalNickname.Declarația pentru este
suggestedDonationadăugată cu următorul cod:string suggestedDonation = "";Găsiți codul pentru a crea matricea
ourAnimalscomentariul următor nr. 3.Următoarea linie de cod creează matricea:
string[,] ourAnimals = new string[maxPets,6];Dimensiunile care definesc cele două dimensiuni ale matricei sunt numărul maxim de animale de companie
maxPetsși numărul6pentru cele șase șiruri definite inițial, dar fără spațiu pentru datele noisuggestedDonation.Actualizați
ourAnimalsmatricea pentru a conține7"coloane" de date pentru fiecare animal în loc de6.Următoarea linie afișează codul actualizat:
string[,] ourAnimals = new string[maxPets,7];Ați extins matricea
ourAnimalspentru a accepta datele adăugatesuggestedDonation.
Adăugarea suggestedDonation cantităților la datele eșantion
Citiți un minut
case 0:în instrucțiunea switch după comentariul nr. 4.Următorul cod care definește datele eșantion pentru primul animal de companie înainte de crearea
suggestedDonationdatelor. S-ar potrivi frumos subanimalNickname!case 0: animalSpecies = "dog"; animalID = "d1"; animalAge = "2"; animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken."; animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses."; animalNickname = "lola"; break;Inserați o
suggestedDonationvaloare deasupra instrucțiuniibreakpentrucase 0;a o parcurgedefault:cu următoarele valori:- Caz 0:
suggestedDonation = "85.00"; - Caz 1:
suggestedDonation = "49.99"; - Caz 2:
suggestedDonation = "40.00"; - Caz 3:
suggestedDonation = ""; - Implicit:
suggestedDonation = "";
Următorul cod afișează
case 0:codul cu adăugarea "suggestedDonation":case 0: animalSpecies = "dog"; animalID = "d1"; animalAge = "2"; animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken."; animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses."; animalNickname = "lola"; suggestedDonation = "85.00"; break;- Caz 0:
În fișierul dvs. project.cs, găsiți următoarea matrice populată cu datele despre animale de companie din declarațiile de caz (este chiar înainte de comentariul nr. 5):
ourAnimals[i, 0] = "ID #: " + animalID; ourAnimals[i, 1] = "Species: " + animalSpecies; ourAnimals[i, 2] = "Age: " + animalAge; ourAnimals[i, 3] = "Nickname: " + animalNickname; ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription; ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;Observați că
suggestedDonationdatele nu sunt incluse ca parte a codului de început al datelor eșantion pentru a popula matricea.Are sens să completați matricea cu o instrucțiune, cum ar fi:
ourAnimals[i, 6] = "Suggested Donation: " + suggestedDonation;Dar nu adăugați codul respectiv. În secțiunea următoare, veți utiliza o altă abordare.
Validare date cu TryParse()
Variabila suggestedDonation este destinată să fie o valoare numerică, dar este colectată și stocată ca .string Luați în considerare cazurile viitoare în care trebuie să validați care suggestedDonation reprezintă o zecimală și că îi puteți efectua conversia la o zecimală, astfel încât să fie disponibilă pentru a fi utilizat pentru calculele de facturare. Pentru a evita erorile atunci când utilizatorii introduc numere în format text, cum ar fi twenty, trebuie să utilizați TryParse validarea.
Notă
Eșantioanele de cod din acest exercițiu sunt proiectate pe baza setărilor de cultură en-US și utilizează un punct (.) ca separator zecimal. Construirea și rularea codului cu o setare de cultură care utilizează un separator zecimal diferit (cum ar fi o virgulă ,) oferă frecvent rezultate sau erori neașteptate. Pentru a remedia această problemă, înlocuiți separatorii de perioadă zecimală din eșantioanele de cod cu separatorul zecimal local (cum ar fi ,).
Ca alternativă, pentru a rula un program utilizând setarea de cultură en-US, adăugați: using System.Globalization;în partea de sus a programului. Iar după orice alte using instrucțiuni, adăugați CultureInfo.CurrentCulture = new CultureInfo("en-US");.
Înainte de a comenta #5, în interiorul blocului de cod, adăugați codul pentru a valida care
suggestedDonationpoate fi difuzat ca zecimal.Adăugați codul care urmează:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 }Dacă variabila
suggestedDonationnu poate fi difuzată ca ,decimalatunci codul atribuie o valoare implicitădecimalDonation = 45.00m;. În cazul în care casta este de succes, populeazăTryParsedecimalDonation. Oricum,decimalDonationreprezintă o zecimală corectă.Asigurați-vă că aveți codul de validare în locul potrivit!
Cele două linii pe care le-ați adăugat ar trebui să apară în cod ca primele două linii ale următorului cod:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 } } // #5 display the top-level menu optionsRețineți că validarea tot nu funcționează. Nu puteți uita, necesitatea de a declara
decimalDonationpentru a-l utiliza în cod.După comentariul nr. 2, declarați
decimalDonation, dupăstring menuSelection = "";:decimal decimalDonation = 0.00m;În cele din urmă, sunteți gata să completați
suggestedDonationdatele pentru fiecare animal de companie.Imediat înainte de comentariul nr. 5, imediat după
TryParseparanteza de}închidere finalizată, adăugați următorul cod:ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";Ați utilizat
decimalDonationversiunea datelor sugerate despre donații. De asemenea, ați utilizat interpolarea și formatarea monedelor în rezultat.Citiți un minut pentru a revizui modul în care datele de donație sugerate ajung în
ourAnimalsmatrice.Următorul cod populează matricea
ourAnimalsîn contextulTryParse():if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 } ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}"; } // #5 display the top-level menu optionsObservați că, utilizând codul
{decimalDonation:C2}donația sugerată, de ladecimalDonation, se afișează cu simbolul monetar local și două zecimale, așa cum se indică de formatarea:C2monedei.
Revizuirea și actualizarea locului în care ourAnimals ar trebui utilizată matricea
Adăugarea suggestedDonation datelor create necesită actualizări suplimentare. Opțiunea "1. List all of our current pet information" de meniu lipsește datele adăugate.
Observați codul de sub comentariul #5, pentru bucla de meniu din
case 1.Bucla internă "
for (int j = 0; j <6; j++)" care imprimă atributele pet trebuie să țină cont desuggestedDonationdate adăugate.Actualizați condiția de ieșire a codului de buclă internă. A crescut condiția de ieșire cu "1", deci devine
j <7. Verificați dacă codul se potrivește cu codul care urmează:case "1": // list all pet info for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(); for (int j = 0; j < 7; j++) // increased exit condition { Console.WriteLine(ourAnimals[i, j]); } } }
Prezentare generală testare
Cu mai multe adăugiri de cod, trebuie să confirmați că codul funcționează așa cum vă așteptați. Cele două zone semnificative de testare sunt:
Codul respectă fără erori.
Selectarea opțiunii de meniu 1 se afișează toate informațiile despre animale de companie:
- Ieșirea include toate informațiile eșantion despre animale de companie, inclusiv: ID, specie, vârstă, supranume, descriere fizică și descriere a personalității.
- Pentru fiecare animal de companie, donația sugerată se afișează cu un simbol monetar și cu două zecimale de precizie.
Verificați-vă activitatea
Construiți și rulați pentru a testa codul. Urmați acești pași de fiecare dată când trebuie să testați codul.
În meniul Fișier Visual Studio Code, selectați Salvare.
În vizualizarea EXPLORER, faceți clic dreapta pe Starter, apoi selectați Deschidere în Terminal integrat.
Un panou TERMINAL ar trebui să se deschidă sub zona Editor de cod.
Există mai multe modalități de a deschide terminalul integrat visual Studio Code. De exemplu, meniul din partea de sus oferă acces la panoul TERMINAL atât din meniul Vizualizare , cât și din meniul Terminal . De asemenea, comenzile rapide de la tastatură care deschid panoul TERMINAL sunt o opțiune valoroasă pentru creșterea eficienței codării. Fiecare metodă este acceptabilă.
Observați că panoul TERMINAL include o linie de comandă și că solicitarea afișează calea curentă a folderului. De exemplu:
C:\Users\someuser\Desktop\GuidedProject\Starter>Puteți utiliza panoul TERMINAL pentru a rula comenzi din interfața linie de comandă (CLI), cum
dotnet buildar fi șidotnet run. Comandadotnet buildcompilează codul și afișează mesaje de eroare și avertisment legate de sintaxa codului.Importantă
Trebuie să vă asigurați că linia de comandă terminal este deschisă la rădăcina spațiului de lucru al proiectului. În acest caz, rădăcina spațiului de lucru al proiectului este folderul Starter, unde se află fișierele Starter.csproj și Program.cs. Atunci când rulați comenzi în terminal, comenzile încearcă să efectueze acțiuni utilizând locația folderului curent. Dacă încercați să rulați comenzile
dotnet buildsaudotnet rundintr-o locație de folder care nu conține fișierele, comenzile generează mesaje de eroare.În linia de comandă TERMINAL, pentru a construi codul de proiect, introduceți următoarea comandă:
dotnet buildDupă câteva secunde, ar trebui să vedeți un mesaj care vă spune că versiunea dvs. a reușit și că aveți
0 Warnings and 0 Errors.Determining projects to restore... All projects are up-to-date for restore. Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net10.0\Starter.dll Build succeeded. 0 Warning(s) 0 Error(s)Notă
Utilizați pașii anteriori
dotnet buildșidotnet runde fiecare dată când trebuie să testați codul în exercițiile care urmează în acest modul.Dacă vedeți Mesaje de eroare sau Avertisment, trebuie să le remediați înainte de a continua.
Mesajele de eroare și avertisment listează linia de cod unde se găsește problema. Următorul mesaj este un exemplu de mesaj de
Build FAILEDeroare:C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]Acest mesaj vă spune tipul de eroare care a fost detectat și unde să o găsiți. În acest caz, mesajul vă spune că fișierul Program.cs conține o eroare -
error CS1002: ; expected. Sugerează; expectedcă ați uitat să includeți un;la sfârșitul unei instrucțiuni. PorțiuneaProgram.cs(53,18)mesajului vă spune locația erorii, pe linia de cod 53, într-o poziție de 18 caractere din stânga.O eroare de sintaxă ca aceasta împiedică generarea să reușească (compilarea NU A REUȘIT). Unele mesaje de compilare oferă un "Avertisment" în loc de "Eroare", ceea ce înseamnă că există o problemă în legătură cu acest lucru, dar puteți încerca să rulați programul oricum (Compilarea a reușit).
După ce remediați problemele și ați salvat actualizările, puteți rula comanda
dotnet builddin nou. Continuați până când aveți0 Warning(s) and 0 Error(s).Dacă întâmpinați dificultăți la rezolvarea unei probleme pe cont propriu, examinați codul Program.cs din folderul Final inclus în descărcarea finalizată în timpul instalării. Codul Program.cs din folderul Final reprezintă încheierea tuturor exercițiilor din acest modul, deci include cod pe care nu l-ați creat încă.
Codul soluției arată adesea diferit de codul Program.cs pe care l-ați dezvoltat în acest punct în proiectul ghidat. Totuși, puteți să examinați codul Program.cs din Final pentru a vă ajuta să izolați și să remediați o problemă din cod.
Evitați să vă bazați pe codul soluției în timp ce dezvoltați propria soluție. Rețineți că învățați din greșeli și că fiecare dezvoltator petrece timp găsind și remediind erorile.
Testați aplicația consolă actualizată, la compilarea liniei de comandă TERMINAL și rulați codul proiectului cu o comandă introducând:
dotnet run. Atunci când codul rulează două elemente de meniu se afișează.- Introduceți "
1" pentru a testa ieșirea "afișați toate animalele de companie" - Introduceți "
2" pentru a testa mesajul substituent "sub construcție"
Ieșirea pentru elementul de meniu nr. 1 trebuie să se potrivească îndeaproape cu următorul eșantion:
ID #: d1 Species: dog Age: 2 Nickname: lola Physical description: medium sized cream colored female golden retriever weighing about 45 pounds. housebroken. Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses. Suggested Donation: $85.00 ID #: d2 Species: dog Age: 9 Nickname: gus Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken. Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs. Suggested Donation: $49.99 ID #: c3 Species: cat Age: 1 Nickname: snow Physical description: small white female weighing about 8 pounds. litter box trained. Personality: friendly Suggested Donation: $40.00 ID #: c4 Species: cat Age: Nickname: lion Physical description: Personality: Suggested Donation: $45.00Dacă totul a funcționat așa cum vă așteptați, felicitări! În caz contrar, căutați eroarea prin verificarea pașilor de instrucțiune a codului implicat. Dacă este necesar, reîncepeți cu un nou fișier de pornire Project.cs și, dacă aveți în continuare probleme, verificați codul folderului soluție pentru acest exercițiu.
- Introduceți "
Tastați
exit, în meniul aplicației, pentru a încheia programul, apoi închideți panoul terminal.