IllegalArgumentException

JavaCat++

Mitglied
Hi Leute,

ich muss ein Bankenverwaltungssystem schreiben und stehe nun vor einem kleinem Problem:
Die Kunden sollen Ihre Kontonummer eingeben. Jedoch sollen Fehler wie 1234567R89 natürlich kontrolliert abgefangen werden. Jetzt ist InputMismatchException ja eine RuntimeExcpetion, die ja eigentlich nicht aufgefangen werden sollen. Ist es trotzdem eine gute Lösung, so etwas zu schreiben:

import java.util.InputMismatchException;
import java.util.Scanner;

public class Test {

public static void main(String[] args) {
try {

Scanner sc = new Scanner(System.in);
int kontonummer = sc.nextInt();

}

catch (InputMismatchException e) {
}

}

LG
 

JStein52

Top Contributor
Ja klar ist das gut so. Eine Alternative Lösung wäre du liest das mit sc.nextLine(); zunächst mal als String ein und überprüfst erst mal selber ob nur gültige Zeichen, sprich Ziffern, darin enthalten sind. Aber ich kann bei der Exception-Lösung nichts nachteiliges erkennen
 

mrBrown

Super-Moderator
Mitarbeiter
Nein, catch leer zu lassen, ist die allerschlechteste Lösung ;)
Jede gefangene Exception sollte man auch sinnvoll behandeln, in diesem Fall zB mit (sinnvoller!) Fehlermeldung und nochmaliger Eingabe. Anstatt die Exception zu nutzen, kann man auch den String einlesen, prüfen und dann erst umwandeln, so geht zB -42 als Kontonummer durch.


Kontonummer als int ist aber auch schon eine schlechte Lösung...
 

JavaCat++

Mitglied
Cool Danke! Ich habe mich nun für folgende Lösung entschieden:

public static void main(String[] args) {

String regex = "(1|2|3|4|5|6|7|8|9)*";

Scanner sc = new Scanner(System.in);

String kontonummer = sc.next();

if (kontonummer.matches(regex)) {
// weiter mit Verarbeitung

}
else {

System.out.println("Fehler!");
// Kunde wurd aus Menü geworfen


}
 

JavaCat++

Mitglied
Wenn ich richtig nachgelesen habe, kann man den regex auch so schreiben, dass immer 12 Zahlen eingegeben werden müssen, dann bräuchte ich kein lenght() und man kann ihm mitgeben, dass die erste Zahl keine Null sein darf. ^^ Und mit der IBAN: Klar ist die Kontonummer veraltet, aber so ist halt die Aufgabe ;) . Für die IBAN bräuchte man schließlich auch noch den Prüfziffer-Algorithmus...der kommt vielleicht später.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben