none
foreach Schleife übersprungen. RRS feed

  • Frage

  • Hallo,

    Ich bin bei meinem Früchtespiel nun auf eine weitere Hürde gestoßen, ich war eigentlich fertig, aus irgeneinem Grund wird aber eine foreach Schleife ausgelassen:

    for (bool finish = false; finish == false;) { string input = ""; Console.WriteLine("Gib nun eine Frucht ein."); input = Console.ReadLine(); for (bool notalreadyused = false; notalreadyused == false;) { Console.WriteLine(".."); //Her wird ".." in einer Dauerschleife ausgegeben, es wird nicht in die foreachschleife hineingegangen...//

    foreach (Fruit adjusment in NotGuestFruits) { Console.WriteLine("..."); if (input != adjusment.FruchtName) { notalreadyused = true; Console.WriteLine("."); } else { Console.WriteLine("Du hast diese Frucht schon angegben!"); notalreadyused = false; Console.WriteLine(","); break; } }

    Oben steht eine Anmerkung.... Ich sehe keinen Grund, die ganzen Ausgaben habe ich eingefügt um zu sehen wo der Fehler liegt.


    Donnerstag, 20. August 2015 16:17

Antworten

  • Hallo,

    ich nehme an, dass dieser Code aus Deiner Methode GameAdjusment() ist, dann solltest Du  überprüfen, ob die Methode Gameset() überhaupt aufgerufen wird.

    Und noch ein Punkt: bei Schleifen, wo die Anzahl der Schleifendurchläufe unbekannt  und von einer Bedingung abhängig ist, wird die while –Schleife verwendet.   

    statt:

    for (bool notalreadyused = false; notalreadyused == false;)
    {
      //
    }

    besser:

    bool notalreadyused = false;
    while (notalreadyused == false)
    {
       //... 
    }

    Grüße

    • Als Antwort markiert R3turnz Freitag, 21. August 2015 17:12
    Freitag, 21. August 2015 13:23

Alle Antworten

  • Da wurde ich mal als erstes vermuten, das "NotGuestFruits" schlicht leer ist; hast Du das schon geprüft?

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 20. August 2015 16:53
  • Hi,

    kleine Anmerkung: Ich persönlich würde mir nochmal Gedanken über die Variablenbenennung machen. Durch die "not..." Benamung und die Prüfung auf false habe ich so meine Probleme, deinen Code direkt zu verstehen, da das für mich immer sowas wie eine doppelte Verneinung ist. Klar kann man das dann drei mal lesen und dann auch verstehen aber intuitiv ist das IMHO nicht.

    Ein wenig Groß- und Kleinschreibung erhöht den Lesefluss dann auch noch.

    Wie gesagt, nur als Anmerkung/Anregung.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 20. August 2015 17:07
    Moderator
  • Danke, mir ist ein Logik-Fehler aufgefallen, ich muss natürlich Guest Fruits abfragen. Die Liste mit der ich oben abgefragt habe war aber ja auf keinen Fall leer, in ihr waren die Früchte, trotzdem wird die Schelife nichtmal angefangen...
    Donnerstag, 20. August 2015 17:41
  • Hallo,

    auch für mich klingt es so als wäre die Liste leer. Setze mal einen Break Point an die Schleife und gucke ob wirklich keine Elemente in der Liste sind. Etwas mehr Informationen zum "richtigen" Debuggen findest du hier.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Donnerstag, 20. August 2015 19:16
    Moderator
  • Hallo,

    ich nehme an, dass dieser Code aus Deiner Methode GameAdjusment() ist, dann solltest Du  überprüfen, ob die Methode Gameset() überhaupt aufgerufen wird.

    Und noch ein Punkt: bei Schleifen, wo die Anzahl der Schleifendurchläufe unbekannt  und von einer Bedingung abhängig ist, wird die while –Schleife verwendet.   

    statt:

    for (bool notalreadyused = false; notalreadyused == false;)
    {
      //
    }

    besser:

    bool notalreadyused = false;
    while (notalreadyused == false)
    {
       //... 
    }

    Grüße

    • Als Antwort markiert R3turnz Freitag, 21. August 2015 17:12
    Freitag, 21. August 2015 13:23