Gültigkeitsüberprüfung von Eingaben

  • Hallo,

    ich bin gerade dabei mir im Selbsstudium (und mit den EProg Folien und denen der geführten Gruppe) Java beizubringen, da ich wahrscheinlich nächstes Semester EProg machen werde.
    Und da hab ich mal ein kleines ZahlenrateSpiel geschrieben, das weder objektorientiert und schon gar nicht nach Java Beans Spezifikation ist (hab vor 7 - 10 Jahren Pascal und C programmiert und muss mich erst an die Objektorientierte Programmierung gewöhnen - Tips hierfür nehme ich auch gerne an). ;)

    Jetzt will ich mit der Scannerfunktion .hasNextInt die Zahl mal auf Gültigkeit überprüfen, nur mal ob sie überhaupt eine IntZahl ist ;)
    Um jetzt falls es keine Zahl ist wieder zur Eingabe zurückzukommen habe ich das ganze in die bereits vorhandene Schleife eingebaut.
    Und hier ist mein Problem, sobald ich einmal eine ungültige Eingabe mache, befindet er sich in einer Endlosschleife in dem Teil wo keine gültige Eingabe ist.
    Kann mir jemand da helfen? Sourcecode siehe unten.

    lg Stefan

  • du hast sc.next(); vergessen, im else zweig:

    else { //sobald er einmal auf diesen Else Teil kommt beginnt eine Endlosschleife, er fragt gar nichtmehr nach einer Eingabe
    System.out.println();
    System.out.println("Ungültige Eingabe, bitte Eingabe wiederholen.");
    sc.next();
    i--;
    }

    du musst die "falsche" eingabe konsumieren (next()) und dann kann man erst was neues eingeben.
    ansonsten bleibt die "falsche" eingabe immer noch stehen und du springst andauernd in den else-zweig.

    mit sc.nextInt() konsumierst du den naechsten Int in der eingabe übrigens ;)

    mfg,
    samyjr

  • Hmmm ... das heisst ich nehm ein sc.Next das mit fast jeder eingabe fertig wird und schmeiss es eigentlich gleich darauf weg. Super Idee, danke ;)

    Andere Frage ... im if wo ich bereits das has.NextInt() habe ... kann ich dort auch gleich Vergleichsoperatoren auf den Integer anwenden (also 0 < x < 1001)?
    Oder muss ich da noch ein weiteres if einbauen?

    lg Stefan

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!