Visual Basic Konsolenanwendung : Console.Readline wartet nicht auf Eingabe

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von NixChecker.

    Visual Basic Konsolenanwendung : Console.Readline wartet nicht auf Eingabe

    Moin Leute,

    hab hier ein Problem mit VB Basic. Der Code ist im Anhang.

    Problem:

    Sobald ich die Konsolenanwendung starte, läuft er bis zur Schleife, wo er die boolean-Eingabe abfragt problemlos.
    Danach allerdings soll er laut janein = console.readline meine Eingabe abwarten, allerdings zeigt er direkt "falsche Eingabe" an, was er
    ja eigentlich erst machen soll, wenn man etwas anderes als "ja" oder "nein" eingibt. Das selbe Problem tritt auf wenn ich die Zeile

    console.writeline("text in der variable: {0}", janein)

    dort sollte eigentlich laut code "leer" per Definition oben stehen, allerdings gibt er dort einfach nichts an


    Long Story short: kann mir jemand sagen woran das liegt ?
    mir geht es weniger um die Funktion an sich daher brauche ich kein Workaround.
    ich will das Problem verstehen.
    Bilder
    • code.jpg

      130,09 kB, 827×657, 281 mal angesehen
    @NixChecker Willkommen im Forum. :thumbup:
    Beim nächsten Mal postest Du bitte kein Bild vom Code, sondern den Code direkt.
    Über dem Post-Editor findest Du Buttons, mit denen Du Deinen Code für die gewünschte Sprache formatieren kannst.
    Vorteil:
    Die Mitglieder, die Dir helfen möchten, können so Deinen Code direkt in ihre Test-Solution kopieren, ihn analysieren und Dir helfen.
    Da ich keine Lust habe, Deinen Code abzuschreiben, kann ich Dir im Moment nicht helfen. Sorry. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany danke für die schnelle Antwort.

    Ich versuch's dann hier nochmal mit copy paste:

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim name1 As String
    4. Dim name2 As String
    5. Dim Stunden As Integer
    6. Dim janein As String = "leer"
    7. Dim janein_bool As Boolean
    8.  
    9.  
    10. Console.WriteLine("Geben Sie Ihren Namen ein")
    11. name1 = Console.ReadLine
    12. Console.WriteLine("Hallo {0} , wie lautet Ihr Nachname?", name1)
    13. name2 = Console.ReadLine
    14. Console.WriteLine("Ah okay, Hallo {0} {1} !", name1, name2)
    15. Console.WriteLine("Wieviele Stunden sind Sie schon hier?")
    16. Stunden = Console.Read
    17. Console.WriteLine("dann wirds aber mal Zeit für'n Feierabend")
    18. Console.WriteLine("Text in der variable: {0}", janein)
    19. Console.WriteLine("Haben Sie Ihre Wochenstundenzahl denn schon erreicht?")
    20. Do
    21. janein = Console.ReadLine
    22. If janein = "ja" Then janein_bool = True
    23. If janein = "nein" Then janein_bool = False Else Console.WriteLine("falsche Eingabe")
    24. Loop Until janein = "ja" Or janein = "nein"
    25. If janein_bool = True Then Console.WriteLine("was machen Sie dann noch hier?")
    26. If janein_bool = False Then Console.WriteLine("Na dann ran an die Arbeit!")
    27.  
    28. Threading.Thread.Sleep(3000)
    29. Console.WriteLine("ENDE")
    30. Threading.Thread.Sleep(1000)
    31.  
    32.  
    33. End Sub
    34.  
    35. End Module
    @NixChecker
    Das Problem liegt bei Stunden = Console.Read.
    Wenn Du diese Eingabe mit einem Enter bestätigst, wird nur die Zahl, nicht aber das Enter aus der Queue entfernt.
    Dieses Enter wird aber bei janein = Console.ReadLine als leere Eingabe ausgewertet.
    Machst Du statt

    VB.NET-Quellcode

    1. Stunden = Console.Read

    VB.NET-Quellcode

    1. Stunden = CInt(Console.ReadLine)
    spielt die Nachbarin wieder mit Dir.
    Allerdings wird hier kein Test auf numerische Eingabe gemacht, das müsstest Du noch einbauen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!