Übung – Schreibe Code, um alle Daten des Arrays ourAnimals anzuzeigen.
In dieser Übung schreiben Sie die geschachtelte Schleifenstruktur und den Auswahlcodeblock zum Anzeigen der Informationen im ourAnimals-Array. Die detaillierten Aufgaben, die Sie während dieser Übung ausführen, sind:
- Äußere Schleife: Erstellen Sie die äußere Schleife, die die Liste der Tiere im ourAnimals-Array durchläuft.
- Datenüberprüfung: Schreiben Sie Code, der auf vorhandene Pet-Daten überprüft, und zeigt die Haustier-ID an, wenn Daten für ein Haustier vorhanden sind.
- Innere Schleife: Erstellen Sie eine innere Schleife, die alle Haustiermerkmale für Haustiere mit zugewiesenen Daten anzeigt.
- Überprüfungstest: Führen Sie Überprüfungstests für den Code aus, den Sie in dieser Übung entwickeln.
Von Bedeutung
Sie müssen die vorherige Übung in diesem Modul abschließen, bevor Sie diese Übung starten.
Erstellen einer Schleife zum Durchlaufen des ourAnimals-Arrays
In dieser Aufgabe erstellen Sie die äußere for-Schleife, die zum Durchlaufen der Liste der Tiere im ourAnimals-Array verwendet wird. Sie untersuchen die Beziehung zwischen den Dimensionen Ihres Arrays und den Parametern der for Schleife. Sie berücksichtigen auch die Unterschiede zwischen der Verwendung von for Anweisungen und foreach Anweisungen beim Arbeiten mit multidimensionalen Arrays.
Stellen Sie sicher, dass Visual Studio Code geöffnet ist und ihre Program.cs Datei im Editor sichtbar ist.
Suchen Sie innerhalb des Codeblocks für die
switch(menuSelection)Selection-Anweisung die folgenden Codezeilen:case "1": // List all of our current pet information Console.WriteLine("this app feature is coming soon - please check back to see progress."); Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Löschen Sie die
Console.WriteLine()Anweisung, mit der die Meldung "In Kürze verfügbar" angezeigt wird, und lassen Sie eine leere Codezeile unterhalb der// List all of our current pet informationCodekommentarzeile.Die Feedbacknachricht wird nicht benötigt, da Sie den Inhalt des
ourAnimalsArrays anzeigen. Während Sie den Code entwickeln, der den anderen Menüauswahlen entspricht, werden diese Feedbacknachrichten ebenfalls aktualisiert.Übernehmen Sie die Nachricht
Press the Enter key to continue..Beginnen Sie in der erstellten leeren Codezeile wie folgt mit einer
for-Anweisung:for () { }Nehmen Sie sich eine Minute Zeit, um zu überlegen, was Sie mit dieser
forAussage erreichen müssen.Denken Sie daran, dass eine
forAnweisung drei Teile enthält, die steuern, wie Iterationen implementiert werden: den Initialisierer, die Bedingung und den Iterator. Die dem Initialisierer zugewiesenen Werte für die Bedingung und für iterator basieren auf dem, was Sie mit derforAnweisung erreichen müssen.In diesem Fall wird die
for-Schleife verwendet, um dasourAnimals-Array zu durchlaufen. Sie wissen, dass Arrays Null indiziert sind, was bedeutet, dass ein Array mitnElementen von0bisn-1indiziert wird. Sie benötigen den for-Initialisierer, die for-Bedingung und den for-Iterator, um die Dimensionen des Arrays abzugleichen. In diesem Fall soll diefor-Schleife bei0beginnen, um1erhöht werden und beimaxPets-1enden.Ihr
ourAnimalsArray wird wie folgt deklariert:string[,] ourAnimals = new string[maxPets, 6];. Sie wissen, dass dermaxPetszugewiesene Wert8ist. Gibt in dieser DeklarationmaxPetsdie Anzahl der Elemente in der ersten Dimension des Arrays an, nicht die nullbasierte Indexnummer, die Sie zum Verweisen auf Elemente im Array verwenden. TrotzmaxPets = 8liegen die Arrayindexnummern zwischen0und7.Um den Steuerelementwert Ihrer
for-Schleife anzugeben, ändern Sie Ihren Code wie folgt:for (int i = 0; i < maxPets; i++) { }Wie Sie sehen, entspricht die Festlegung des for-Initialisierers auf
int i = 0;dem nullbasierten Arrayindex. Ebenso entspricht die Festlegung der for-Bedingung aufi < maxPets;der ersten Dimension des Arrays. Wenn Sie schließlich den for-Iterator aufi++festlegen, wird der Schleifen-Steuerelementwert für jede Iteration um1erhöht.Überlegen Sie kurz, welche Auswirkungen die Wahl einer
for-Anweisung bzw. einerforeach-Anweisung beim Durchlaufen des ourAnimals-Arrays hat.Das Ziel ist es, jedes Tier im ourAnimals-Array einzeln zu durchlaufen. Warum sollten Sie also keine
foreach-Schleife verwenden? Schließlich wissen Sie, dass dieforeachAnweisung für Fälle konzipiert ist, wenn Sie jedes Element in einem Array von Elementen durchlaufen möchten.Der Grund, warum Sie in dieser Situation keine
foreach-Schleife verwenden, ist, dass es sich beimourAnimals-Array um ein mehrdimensionales Array handelt. DaourAnimalsein mehrdimensionales Zeichenfolgenarray ist, ist jedes inourAnimalsenthaltene Element ein separates Element vom Typ „string“. Wenn Sie eineforeachSchleife zum Durchlaufen vonourAnimalsverwendet haben, wirdforeachjede Zeichenfolge als separates Element in einer Liste von 48 Zeichenfolgenelementen erkennen (8 x 6 = 48). DieforeachAnweisung würde die beiden Arraydimensionen nicht separat verarbeiten. Mit anderen Worten: Eineforeach-Schleife erkennt8-Zeilen von Zeichenfolgenelementen nicht, bei denen jede Zeile eine Spalte mit6-Elementen enthält. Da Sie gleichzeitig mit einem Tier arbeiten und alle sechs tierischen Merkmale während einer einzelnen Iteration verarbeiten möchten, ist eineforeachAussage nicht die richtige Wahl.Wenn das
ourAnimals-Array jedoch ein Jagged Array ist, das als Array von Zeichenfolgenarrays konfiguriert ist, könnten Sie eineforeach-Anweisung verwenden. In diesem Fall würden Sie eineforeachfür eine äußere Schleife und eine zweiteforeachfür eine innere Schleife erstellen. Die äußere Schleife durchläuft dann die Elemente im Zeichenfolgenarray im Jagged Array. Die Zeichenfolgenarrays sind die „Zeilen“ im zweidimensionalen Array. Die innere Schleife würde die Zeichenfolgenelemente in den Zeichenfolgenarrays durchlaufen. Die Zeichenfolgenelemente in den Zeichenfolgenarrays sind die „Spalten“ im zweidimensionalen Array.Im folgenden Codebeispiel wird der Ansatz des Jagged Arrays veranschaulicht.
string[][] jaggedArray = new string[][] { new string[] { "one1", "two1", "three1", "four1", "five1", "six1" }, new string[] { "one2", "two2", "three2", "four2", "five2", "six2" }, new string[] { "one3", "two3", "three3", "four3", "five3", "six3" }, new string[] { "one4", "two4", "three4", "four4", "five4", "six4" }, new string[] { "one5", "two5", "three5", "four5", "five5", "six5" }, new string[] { "one6", "two6", "three6", "four6", "five6", "six6" }, new string[] { "one7", "two7", "three7", "four7", "five7", "six7" }, new string[] { "one8", "two8", "three8", "four8", "five8", "six8" } }; foreach (string[] array in jaggedArray) { foreach (string value in array) { Console.WriteLine(value); } Console.WriteLine(); }Für die Contoso Pets-Anwendung ist es wahrscheinlich einfacher, ein mehrdimensionales Zeichenfolgenarray und geschachtelte
for-Schleifen anstelle eines Jagged Arrays und geschachtelterforeach-Schleifen zu verwenden. Nachdem Sie nun sehen, wie jede Option funktioniert, können Sie ihre eigene Wahl in zukünftigen Codierungsprojekten treffen.Wählen Sie im Menü "Visual Studio Code-Datei " die Option "Speichern" aus.
Öffnen Sie den Bereich "Integriertes Terminal" in Visual Studio Code, und geben Sie den Befehl ein, um Ihr Programm zu erstellen.
Um das Integrationsterminal aus der EXPLORER-Ansicht zu öffnen, klicken Sie mit der rechten Maustaste auf "Starter", und wählen Sie dann "Im integrierten Terminal öffnen" aus. Sie können auch das Menü "Ansicht" oder "Terminal " verwenden, um den integrierten Terminalbereich zu öffnen.
Um Ihr Programm zu erstellen, geben Sie den
dotnet buildBefehl über die Terminal-Eingabeaufforderung ein.Beheben Sie alle Buildfehler oder Warnungen, die angezeigt werden, bevor Sie fortfahren.
Denken Sie daran, dass die Buildfehler- und Warnmeldungen Ihnen mitteilen, was das Problem ist und wo Sie es finden können. Bei der Behebung von Problemen empfiehlt es sich, mit den Problemen zu beginnen, die am Anfang des Codes auftreten und nach unten arbeiten.
Schließen Sie das Panel „Terminal“.
Überprüfung vorhandener Haustierdaten und Ergebnis anzeigen
In dieser Aufgabe verwenden Sie eine if Anweisung, um jedes Haustier in dem ourAnimals Array zu finden, dem Daten zu Tiermerkmalen zugewiesen wurden. Wenn ein Haustier mit zugewiesenen Daten gefunden wird, zeigen Sie die PetID an. Wenn keine Daten zugewiesen sind, wird nichts angezeigt. Sie führen den Code aus, um zu überprüfen, ob Ihre for- und if-Anweisungen ordnungsgemäß funktionieren.
Erstellen Sie eine leere Codezeile in Ihrem
forAnweisungscodeblock wie folgt:for (int i = 0; i < maxPets; i++) { }Um eine
ifAnweisung zu erstellen, die auf Daten für Haustier-ID überprüft, aktualisieren Sie Ihren Code wie folgt:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { } }Nehmen Sie sich eine Minute Zeit, um zu überlegen, was diese
ifAussage auswertet und warum.Betrachten Sie zunächst die linke Seite des Ausdrucks:
ourAnimals[i, 0]. Beachten Sie, dass die Schleifensteuerungsvariableiverwendet wird, um das zu untersuchende Tier anzugeben. Wie Sie sich erinnern können, entspricht das0In[i, 0]dempetIDMerkmal. Da die erste Dimension des Arrays der "Zahl" des Tieres entspricht, stellt diese Seite des Ausdrucks sicher, dass ihr Code den Wert überprüft, der für jedes Tier im Array zugewiesenpetIDist.Zweitens sollten Sie die Wahl des Vergleichsoperators berücksichtigen. Beachten Sie, dass der nicht gleiche Operator
!=verwendet wird. Der Ausdruck wird zutrueausgewertet, wenn der der petID zugewiesene Wert NICHT gleich dem Wert ist, der auf der rechten Seite der Gleichung,ourAnimals[i, 0], aufgeführt ist.Betrachten Sie drittens den Wert auf der rechten Seite der Formel. Beachten Sie, dass ein statischer Zeichenfolgenwert
"ID #: "verwendet wird. Dies ist der Standardwert, der beim Generieren der Beispieldaten zugewiesenpetIDist. Wenn einem Tier Merkmale zugewiesen werden, wird derpetIDWert aktualisiert und ist NICHT gleich dem Standardwert.Dies gibt an, dass der Codeblock der
if-Anweisung ausgeführt wird, wenn für das aktuell überprüfte Tier Merkmale definiert sind.Hinweis
Dies ist ein gutes Beispiel für die Verwendung von
!=. Sie achten nicht darauf, welchen WertpetIDzugewiesen ist, Hauptsache, es ist nicht der Standardwert.Um eine
Console.WriteLine()Methode zu erstellen, diepetIDinnerhalb des Codeblocks derif-Anweisung anzeigt, aktualisieren Sie den Code wie folgt:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); } }Beachten Sie, dass ein Arrayelement beim Aufrufen der
WriteLine()Methode als Argument verwendet werden kann.Wählen Sie im Menü "Visual Studio Code-Datei " die Option "Speichern" aus.
Öffnen Sie den Bereich "Integriertes Terminal", und geben Sie den Befehl ein, um Ihr Programm zu erstellen.
Beheben Sie alle Buildfehler oder Warnungen, die angezeigt werden, bevor Sie fortfahren.
Geben Sie an der Terminal-Eingabeaufforderung den Befehl ein, um Ihr Programm auszuführen.
Geben Sie den
dotnet runBefehl an der Terminal-Eingabeaufforderung ein, um den Programmcode auszuführen.Wenn Ihr Code einen Laufzeitfehler generiert, beheben Sie die Fehler, speichern Sie Ihre Updates, und starten Sie die Anwendung neu.
Geben Sie an der Terminaleingabeaufforderung 1 ein, um zu überprüfen, ob Ihre neue Codelogik wie erwartet funktioniert.
Die folgenden
petIDWerte sollten angezeigt werden:ID #: d1 ID #: d2 ID #: c3 ID #: c4 Press the Enter key to continue.Diese IDs entsprechen den Haustieren, denen Daten zugewiesen wurden.
Wenn ihr Code beim Auswählen der Menüoption 1 andere Ausgabe anzeigt, überprüfen und aktualisieren Sie den Code. Denken Sie daran, dass Sie Ihre Program.cs Datei speichern müssen, nachdem Sie Aktualisierungen vorgenommen haben.
Beenden Sie die Anwendung, und schließen Sie dann den Terminalbereich.
Alle Merkmale von Haustieren mit zugewiesenen Daten anzeigen
In dieser Aufgabe erstellen Sie eine for Schleife innerhalb des if Anweisungscodeblocks, der verwendet wird, um alle Merkmale des aktuellen Haustiers anzuzeigen.
Suchen Sie im Code-Editor die folgenden Codezeilen in ihrer Program.cs Datei:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); } }Um die
forSchleife zu erstellen, die die Merkmale jedes Haustiers durchlaufen soll, aktualisieren Sie Den Code wie folgt:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); for (int j = 0; j < 6; j++) { } } }Beachten Sie, dass Sie jetzt eine zweite
forSchleife haben, die innerhalb des Code-Blocks der erstenforSchleife „geschachtelt“ ist. Wie Sie wissen, durchläuft die äußere Schleife die Tiere imourAnimals-Array. Die Absicht besteht darin, dass die innere Schleife die Merkmale jedes Tiers durchlaufen soll. Da die Tierdaten in einem mehrdimensionalen Array gespeichert werden, ist es leicht, auf tierliche Merkmale zuzugreifen.Nehmen Sie sich eine Minute Zeit, um die eingegebene
forErklärung zu überprüfen.Beachten Sie, dass die Variable des Schleifensteuerelements benannt
jist. Wenn Siefor-Schleifen schachteln, besteht ein herkömmlicher Ansatz darin,iin der äußeren undjin der inneren Schleife zu verwenden. Die folgenden Konventionen erleichtern es anderen Benutzern, Ihren Code zu lesen.Da für jedes Tier sechs Merkmale gespeichert werden, ist der
int j = 0;und der Zustandj < 6;. Diese Kombination aus Initialisierung und Bedingung entspricht dem benötigten Arrayindexbereich.0-5Um jedes Merkmal eines Haustiers in einer separaten Zeile anzuzeigen, aktualisieren Sie Ihren Code wie folgt:
for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(ourAnimals[i, 0]); for (int j = 0; j < 6; j++) { Console.WriteLine(ourAnimals[i, j]); } } }Nehmen Sie sich eine Minute Zeit, um die geschachtelte Struktur zu berücksichtigen, die Sie erstellt haben, und die angezeigte Ausgabe, die Ihr Code erzeugt.
Beachten Sie, dass der an der Konsole ausgegebene Wert
ourAnimals[i, j]die Schleifensteuervariablen aus der äußeren und innerenfor-Schleife verwendet.Sie kennen die folgenden Elemente:
- Die erste Dimension des
ourAnimalsArrays entspricht den verschiedenen Haustieren. - Die zweite Dimension des
ourAnimalsArrays entspricht den Merkmalen jedes Haustiers. - Die
if-Anweisung verhindert, dass die innere Schleife ausgeführt wird, wenn dem aktuellen Haustier keine Daten zugewiesen sind. - Die innere Schleife schließt alle Iterationen für jede Iteration der äußeren Schleife ab.
Daher wissen Sie, dass die Merkmale jedes Tieres wie vorgesehen angezeigt werden.
- Die erste Dimension des
Aktualisieren Sie den Code wie folgt, um die PetID-Nachricht durch ein leeres
WriteLine()Element zu ersetzen:for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 0] != "ID #: ") { Console.WriteLine(); for (int j = 0; j < 6; j++) { Console.WriteLine(ourAnimals[i, j]); } } }Durch diese letzte Änderung ist es einfacher, zwischen den Haustieren zu unterscheiden, wenn die Ausgabe an der Konsole angezeigt wird.
Wählen Sie im Menü "Visual Studio Code-Datei " die Option "Speichern" aus.
Öffnen Sie einen Terminalbereich, und erstellen Sie das Programm.
Beheben Sie alle Buildfehler oder Warnungen, die angezeigt werden, bevor Sie fortfahren.
Überprüfen Sie Ihre Arbeit
In dieser Aufgabe führen Sie Ihre Anwendung über das integrierte Terminal aus und stellen sicher, dass Ihre geschachtelte Kombination aus for und if Anweisungen das erwartete Ergebnis erzeugt.
Öffnen Sie bei Bedarf das Visual Studio Code-Panel „Integriertes Terminal“.
Geben Sie an der Terminal-Eingabeaufforderung dotnet run ein.
Geben Sie im Terminal-Eingabefeld 1 ein.
Stellen Sie sicher, dass die Haustierdaten für die vier Haustiere angezeigt werden, denen Daten zugewiesen wurden.
ID #: d1 Species: dog Age: 2 Nickname: lola Physical description: medium sized cream colored female golden retriever weighing about 65 pounds. housebroken. Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses. ID #: d2 Species: dog Age: 9 Nickname: loki 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. ID #: c3 Species: cat Age: 1 Nickname: Puss Physical description: small white female weighing about 8 pounds. litter box trained. Personality: friendly ID #: c4 Species: cat Age: ? Nickname: Physical description: Personality: Press the Enter key to continue.Hinweis
Wenn die erwarteten Ergebnisse nicht angezeigt werden, stellen Sie sicher, dass Sie die aktualisierte Program.cs Datei gespeichert haben. Wenn die erwarteten Ergebnisse nicht angezeigt werden und Sie das Problem nicht identifizieren können, können Sie den Program.cs Code im Endgültigen Ordner untersuchen. Der endgültige Ordner ist im Rahmen des Downloads enthalten, den Sie während des Setups abgeschlossen haben. Es wird empfohlen, zeitlang zu versuchen, Syntax- und Logikproblem in Ihrem Code zu identifizieren und zu beheben, bevor Sie die Program.cs Datei im endgültigen Ordner überprüfen.
Beenden Sie die Anwendung, und schließen Sie dann den Terminalbereich.