scan.nextInt() wiederholen bis eine Zahl eingeben wird

Poppigescorn

Mitglied
Hey,

folgendes Problem:

Ich habe einen scanner für eine Int Zahl, wenn ich ein Zeichen oder Buchstaben eingebe gibt es logischerweise eine exception error. Wie kann ich in einer schleife definieren, dass das Programm die eingabe solange wiederholen soll, bis eine Zahl eingeben wird?
 

Barista

Top Contributor
Erst mal ein try catch drum herum.

Darum herum eine Schleife mit einem boolean-Erfolgs-Merker.

[CODE lang="java" title="ScanIntCatched"]import java.io.IOException;
import java.util.Scanner;

public class ScanIntCatched
{

public static void main(String[] args) throws IOException
{
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);

int spielerAnzahl = 0;

boolean isExceptionRaised;

do
{
isExceptionRaised = false;

try
{
System.out.println("Gebe eine Spieleranzahl ein");
spielerAnzahl = scanner.nextInt();
}
catch (Exception e)
{
System.out.println( "Dies ist keine Zahl!" );
scanner.next(); // clear scanner
isExceptionRaised = true;
}
}
while ( isExceptionRaised );

System.out.println( "Hurra, Anzahl Spieler: " + spielerAnzahl );
}

}
[/CODE]

Dir bleibt noch überlassen Zahlen kleiner 1 abzuweisen.
 

JensXF

Mitglied
Mein Lösungsweg
Java:
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);

        String spielerAnzahl;
        boolean istZahl = false;

        do {
            System.out.println("Gebe eine Spieleranzahl ein");
            spielerAnzahl = scan.nextLine();

            for (int i = 0; i < spielerAnzahl.length(); i++) {
                if (!Character.isDigit(spielerAnzahl.charAt(i))) {
                    istZahl = false;
                    break;

                } else {
                    istZahl = true;
                }
            }

        } while (!istZahl);

        System.out.println(spielerAnzahl);
    }
}
 

Poppigescorn

Mitglied
Magst du deine Lösung noch mit uns teilen?
Yes! moment :D


[CODE lang="java" title="meine Lösung:"]while (check) {
try {
spielerAnzahl = scan.nextInt();
System.out.println("Ihr seid " + spielerAnzahl + " Spieler, richtig?");
answer = scan.next();

if (answer.equals(x)) {
check = false;

if (!check) {
continue;
}
}

do {

while (!(answer.equals(x)) && !(answer.equals(y))) {
System.err.println("Bitte ja oder nein eingeben");
answer = scan.next();

}

System.out.println("Gebe eine Spieleranzahl ein");
spielerAnzahl = scan.nextInt();
System.out.println("Ihr seid " + spielerAnzahl + " Spieler, richtig?");
answer = scan.next();

} while (answer.equals(y) || !(answer.equals(x)) && !(answer.equals(y)));

check = false;

if (!check) {
continue;
}

} catch (InputMismatchException e) {
String err = scan.next();
System.err.println(err + " ist keine Zahl! Wiederholen Sie die Eingabe:");

}

}

}[/CODE]

[CODE lang="java" title="statische variablen"] static Scanner scan;
static int spielerAnzahl;
static String answer = "";
static String x = "ja";
static String y = "nein";
static boolean check = true;[/CODE]
 

Neumi5694

Top Contributor
Wie wär's, wenn du die Exception als Bedingung verwendest, bzw. die Bedingung für's Weitermachen dann setzt, wenn keine Exception vorkommt?
Java:
    public static void main(String[] args) {
        int number = fetchAIntNumberFromConsole("Zahl bitte: ", "ZAHL!!!! ... bitte: ");
    }

    static int fetchAIntNumberFromConsole(String text, String textIfInputInvalid) {
        if (text != null) {
            System.out.print(text);
        }
        int number = 0;
        boolean noValidInputYet = true;
        Scanner scanner = new Scanner(System.in);
        do {
            try {
                number = scanner.nextInt();
                noValidInputYet = false;
            } catch (InputMismatchException e) {
                System.out.print(textIfInputInvalid);
                scanner.next(); //Um den aktuellen Inhalt zu löschen. Alternativ bei jeder Eingabe einen neuen Scanner erstellen, geht auch.
            }
        } while (noValidInputYet);
        return number;
    }

//und jetzt nochmal ganz ohne Abbruchbedingung
    static int fetchAIntNumberFromConsoleAlternative(String text, String textIfInputInvalid) {
        if (text != null) {
            System.out.print(text);
        }
        Scanner scanner = new Scanner(System.in);
        while(true) {//Endlosschleife
            try {
                return scanner.nextInt(); //Sobald die Eingabe ausgewertet werden kann, wird das Ergebnis geliefert.
            } catch (InputMismatchException e) {
                System.out.print(textIfInputInvalid);
                scanner.next(); //Um den aktuellen Inhalt zu löschen. Alternativ bei jeder Eingabe einen neuen Scanner erstellen, geht auch.
            }
        }
    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
monsterherz Replace mit Scan Java Basics - Anfänger-Themen 20
H Kürzere Scan Methode Java Basics - Anfänger-Themen 7
A Double Scan eingrenzen Java Basics - Anfänger-Themen 2
K Frage zu scan nextln Java Basics - Anfänger-Themen 6
P Alternative zu scan.nextLine() Java Basics - Anfänger-Themen 4
R Einzelne Zahlen von der Eingabe (Scan) weiterverarbeiten Java Basics - Anfänger-Themen 3
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
K scan.nextLine Java Basics - Anfänger-Themen 5
V Variablen Problem mit Matheaufgabe / int first = mScanner.nextInt(); Java Basics - Anfänger-Themen 5
D nextInt() nicht für Scanner definiert? Java Basics - Anfänger-Themen 2
S Array mit "foreach"-Schleife und nextInt (aus Scanner) beschreiben Java Basics - Anfänger-Themen 6
Q Klammer nach .nextInt Java Basics - Anfänger-Themen 3
gstarplayer [Verständnisprobleme] Java next(),nextLine,nextInt und parseInt! Java Basics - Anfänger-Themen 22
F Erste Schritte Mehrere nextInt() Eingaben nebeneinander ausgeben Java Basics - Anfänger-Themen 12
A Warum verursacht Scanner.nextInt() einen Fehler Java Basics - Anfänger-Themen 10
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
SergioCK Do while Schleife wiederholen Java Basics - Anfänger-Themen 14
H 36 Zufallszahlen die sich nicht wiederholen Java Basics - Anfänger-Themen 27
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
D Substring wiederholen Java Basics - Anfänger-Themen 33
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
S Programm läuft nicht weiter, wie Code wiederholen? Java Basics - Anfänger-Themen 2
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
B Wiederholen einer if/switch-case Schleife Java Basics - Anfänger-Themen 9
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
D Java BlueJ Programm wiederholen? Java Basics - Anfänger-Themen 6
K Das Gleiche wiederholen Java Basics - Anfänger-Themen 5
E Wiederholen ? y/n Java Basics - Anfänger-Themen 2
M Falsche Eingabe wiederholen lassen Java Basics - Anfänger-Themen 2
F Befehle wiederholen Java Basics - Anfänger-Themen 7
R eine Methode automatisch wiederholen Java Basics - Anfänger-Themen 12
R Erste Schritte Wie am einfachsten Aufgabe wiederholen Java Basics - Anfänger-Themen 37
N Anfrage- wiederholen Ja oder Nein Java Basics - Anfänger-Themen 12
P Thread in Schleife wiederholen Java Basics - Anfänger-Themen 7
E Objekteingabe wiederholen Java Basics - Anfänger-Themen 2
B klasse wiederholen lassen. Java Basics - Anfänger-Themen 5
H OOP Setter im Konstruktor um code nicht zu wiederholen? Java Basics - Anfänger-Themen 2
J Wiederholen? Java Basics - Anfänger-Themen 5
M AudioStream - wiederholen, pausieren und wieder starten Java Basics - Anfänger-Themen 2
B eine Aktion Wiederholen Java Basics - Anfänger-Themen 6
O wiederholen Java Basics - Anfänger-Themen 4
H Eingabe so lange wiederholen bis gültiger Wert eingegeben. Java Basics - Anfänger-Themen 7
E Nach einer gewissen Zeit wiederholen Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben