Java: Länge von eingegebener Zahl prüfen mit Scanner

yxy

Lieutenant
Registriert
Juli 2014
Beiträge
570
Hallo,

ein Benutzer soll eine Zahl eingeben können.
Diese wird dann mit dem Befehl:
Code:
input = userScanner.nextInt();
in die Variable vom Datentyp int eingelesen.

Nun kann es ja sein, dass der Benutzer eine große Zahl eingibt, die mit 32Bit nicht dargestellt werden kann.
Dann gibt das Programm aktuell einen Fehler aus und beendet sich.
Gibtes eine Möglichkeit die eingegebene Zahl zu prüfen und erst wenn diese kleiner ist als 32Bit der Variable zuzuweisen. Ansonsten soll zwar ein Fehlertext ausgegeben werden, aber das Programm sich nicht automatisch beenden.

Bsp:
Code:
while(true){
int input = userScanner.nextInt();
}
Jetzet wird ja immer wieder eine Zahleneingabe erwartet. Sobald ich aber eine zu große Zahl eingebe beendet sich das Programm. Ich möchte aber, dass es nur einen Fehlertext ausgibt und auf die Einabe der nächsten Zahl wartet. Ist das irgendwie möglich?
 
Ohne zu wissen, was da sonst so mit dem Int passiert...

Nutz doch einfach nen long oder nen biginteger.
Code:
long input = userScanner.nextLong()
 
@Neo:
Irgendwas passt noch nicht:
Code:
        try{
            input = userScanner.nextInt();
        } catch(NoSuchElementException){return;}
@Defender: Danke, aber der Datentyp hat ja auch eine Begrenzung. Würde gerne sicherstellen, dass der Benutzer eine beliebig große Zahl eingeben kann, ohne dass das Programm einen Fehler ausgibt.
 
Ist ja auch die falsche Exception die du da abfängst, NeoExacun hat dir doch schon die richtige genannt.

Btw. Bei einem BigInteger ist die Zahl schon absurd groß ;-)
 
InputMismatchException != NoSuchElementException

Und wenn du im Fehlerfall returnst, kann der Benutzer nicht nochmal was eingeben. Deine Fehlerbehandlung sollte den Fehler auch sinnvoll behandeln.
 
Code:
try{
            input = userScanner.nextInt();
        } catch(InputMismatchException){return 1;}
Funktioniert aber leider auch nicht.
Mit return springe ich in die main Funktion zurück, in der dann der Rückgabewert entsprechend verarbeitet wird.
 
Und was funktioniert daran nicht? Man kann dir leider nur helfen, wenn du Infos zum Problem gibst.
 
So ist das mit return nun einmal ...

Ich werf einfach noch einmal einen nützlichen Codeschnipsel hier rein:

Code:
int input = 0;
while(input == 0)
 
Es wird im Editor rot unterstrichen mit dem Fehler:
cannot find symbol
symbol: class InputMismatchException
 
Dann musst du InputMismatchException importieren. Ich empfehle dir, mal ein größeres Tutorial durchzumachen. Du stocherst komplett blind in der Sprache rum.
 
Ja, belege aktuell einen Kurs.
Da stehen wir aber gerade erst am Anfang.
Ergänzung ()

Hat geklappt, dankeschön ;)
 
Zurück
Oben