Schleife neu starten!?

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Alteran.

    Schleife neu starten!?

    Tach alle! :D

    Hab schon die SuFu verwendet, hat mir aber leider nix geliefert..Auch nicht bei Google ^^
    Meine Frage kurz und bündig:

    Wie kann man eine Schleife (Do Schleife) von neuem starten lassen, wenn bei Console.ReadLine eine bestimmte Eingabe statt findet!?

    (Mein BSP: Wenn "J", dann Schleife neu starten, bei "N" Programm beenden..)

    Grüße #7
    ahoi,

    nun du könntest die schleife in eine sub auslagern und diese dann bei der eingabe aufrufen
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    hmm..
    Ich hab das jetzt mal ausprobiert. Da ich mich aber noch nicht sooo super in VB auskenne, ist das leider nix geworden.
    Ich zeig euch mal meinen Code, wie ich mir das vorgestellt hatte..

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim echteZahl As Integer
    4. Dim rateZahl As Integer
    5. Dim zufallsZahl As New Random()
    6. Dim counter As New Integer
    7. 'Dim antwort As Char
    8. 'Do
    9. Console.WriteLine("Bitte geben Sie eine Zahl zwischen 0 und 100 ein: ")
    10. echteZahl = zufallsZahl.Next(0, 101)
    11. rateZahl = Console.ReadLine()
    12. counter = 1
    13. Do Until rateZahl = echteZahl
    14. If rateZahl < echteZahl Then
    15. Console.WriteLine("Größer")
    16. rateZahl = Console.ReadLine()
    17. counter += 1
    18. ElseIf rateZahl > echteZahl Then
    19. Console.WriteLine("Kleiner")
    20. rateZahl = Console.ReadLine()
    21. counter += 1
    22. End If
    23. Loop
    24. Console.WriteLine("Richtig!")
    25. Console.WriteLine("Sie haben {0} Versuche benötigt...", counter)
    26. If counter < 5 Then
    27. Console.WriteLine("Wow, sie sind fast so gut wie ich!")
    28. ElseIf counter < 10 Then
    29. Console.WriteLine("Sie sollten noch ein bisschen üben!")
    30. ElseIf counter > 10 Then
    31. Console.WriteLine("An ihrer Stelle würde ich meinen PC verkaufen!")
    32. End If
    33. 'Console.WriteLine("Wollen Sie noch einmal spielen (J/N)?")
    34. 'antwort = Console.ReadLine()
    35. 'If antwort = "j" Or "J" Then
    36. ' DoSchleife Neu Starten?!
    37. 'ElseIf antwort = "n" Or "N" Then
    38. ' Exit Do
    39. 'End If
    40. 'Loop Until antwort = "n" Or "N"
    41. End Sub
    42. End Module

    Kann man das mit dem "Neu Spielen" nicht auch einfacher hinbekommen?

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim antwort As Char
    4. Do
    5. Dim echteZahl As Integer
    6. Dim rateZahl As Integer
    7. Dim zufallsZahl As New Random()
    8. Dim counter As New Integer
    9. Console.WriteLine("Bitte geben Sie eine Zahl zwischen 0 und 100 ein: ")
    10. echteZahl = zufallsZahl.Next(0, 101)
    11. rateZahl = Console.ReadLine()
    12. counter = 1
    13. Do Until rateZahl = echteZahl
    14. If rateZahl < echteZahl Then
    15. Console.WriteLine("Größer")
    16. rateZahl = Console.ReadLine()
    17. counter += 1
    18. ElseIf rateZahl > echteZahl Then
    19. Console.WriteLine("Kleiner")
    20. rateZahl = Console.ReadLine()
    21. counter += 1
    22. End If
    23. Loop
    24. Console.WriteLine("Richtig!")
    25. Console.WriteLine("Sie haben {0} Versuche benötigt...", counter)
    26. If counter < 5 Then
    27. Console.WriteLine("Wow, sie sind fast so gut wie ich!")
    28. ElseIf counter < 10 Then
    29. Console.WriteLine("Sie sollten noch ein bisschen üben!")
    30. ElseIf counter > 10 Then
    31. Console.WriteLine("An ihrer Stelle würde ich meinen PC verkaufen!")
    32. End If
    33. Console.WriteLine("Wollen Sie noch einmal spielen (J/N)?")
    34. antwort = Console.ReadLine()
    35. 'If antwort = "j" Or "J" Then
    36. ' DoSchleife Neu Starten?!
    37. 'ElseIf antwort = "n" Or "N" Then
    38. ' Exit Do
    39. 'End If
    40. Loop Until antwort = "n" Or antwort = "N"
    41. End Sub
    42. End Module


    Probiers mal so!
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    So.. jetzt habt ihrs geschafft xD
    Es funzt.. danke! Aber ich weiß nicht warum. Kannst du mir mal erklären warum die Var antwort jetzt auserhalb steht?
    Und wieso funzt das mit dem J/N, wenns auskommentiert ist?! ^^
    Ich blick gar nicht mehr durch...
    Freut mich.. so, nun zur Erklärung:

    Wenn die Variable antwort in der do schleife drin deklariert wird, dann ist sie auch NUR(!) INNERHALB der Do Schleife gültig.
    Du kannst sie also von außen nicht ansprechen.
    Deswegen wurde sie außerhalb der Do - Schleife deklariert und ich konnte es auch abfragen.

    Zu der anderen Frage:

    Es funktioniert, weil ich in der Do - Loop Schleife nur nach "N" bzw. "n", also Nein abfrage.

    VB.NET-Quellcode

    1. Do
    2. 'dein code
    3. Loop Until antwort = "n" Or antwort = "N"


    Hier wird befohlen: Mach(Do) "dein Code", BIS(UNTIL) antwort N oder n ist (Solange antwort nicht N ist klingt besser).
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer