InputMismatchException (Try and catch)

vjung

Aktives Mitglied
Ich habe nun letztes Problem bevor ich das Programm als fertiggestellt markieren kann, und zwar:
Möchte ich exceptions auffangen und die Eingabe wiederholen lassen. In meinem Programm sollte die einzigMögliche Exception eine InputMismatchExeption sein. Habe mich darüber soeben versucht zu informieren, aber habe nichts brauchbares aus dem Wissen programmieren können. Habe viele Versuche unternommen und meistens meckerte der Compiler das die while Bedinung fehlt oder try und catch ohne jeweiligen Partner gefunden wurden (Also try ohne catch und catch ohne try). Hier ein Grundgerüst von dem was ich versucht habe:
Java:
...
// Instanzvariablen;
...
//Konstruktoren um Objekte anderer Klassen herzustellen
//

try{
do{
      System.out.println("1 eingeben für Termin anlegen");
     System.out.println("2 eingeben für Termin ändern");
    System.out.println("3 eingeben für Programm beenden");
auswahl = sc.nextInt();
switch(auswahl){
   case 1:  ...
                break;
   case 2:  ...
                 //Anweisungen mit den Objekten und Variablen
                break;
   case 3: System.exit(0);
                break;
   }
   } 
   while(auswahl != 3);
    }
    catch(InputMismatchException e){
     System.out.println("Falsche Eingabe. Bitte eine Zahl von 1 - 3 eingeben!");
    }

Das funktioniert aber irgendwie nicht :/ Muss bis Mitternacht das Ding fertig haben...
 
Mach in dem Switch-Statement ein default: System.out.println("...");
Dieses wird immer aufgerufen, wenn keines der vorigen passt.
 
ja aber das problem ist das dies nicht passiert wenn man Buchstaben eingibt, da der Scanner die Exeption bei der eingabe liefert.

Also wenn der Benutzer für Auswahl Buchstaben eingeben würde.
 
Hatte ich auch bereits probiert, wenn ich dies mache kompiliert er nicht und gibt folgenden error aus:

variable auswahl might not have been initialized
switch(auswahl){
^(der pfeil zeigt auf das erste a von auswahl)
 
Also ich habe es so gesetzt gehabt:
Java:
....
try{
    auswahl = sc.nextInt();
    }
    catch(InputMismatchException e){
        System.out.println("Wront input");
    }
        switch(auswahl)
....{
 
Dann musst du sie am Anfang auf einen Startwert setzen: 0, -1 o.ä.

Ca. so:
Java:
Scanner sc = new Scanner(System.in);
String auswahl = "";
do{
     System.out.println("1 eingeben für Termin anlegen");
     System.out.println("2 eingeben für Termin ändern");
     System.out.println("3 eingeben für Programm beenden");
     try {
         auswahl = sc.next();
     }catch (InputMismatchException e){
         System.out.println("Falsche Eingabe");
     }
     switch(auswahl){
         case "1":
             System.out.println("1");
             break;
         case "2":
             System.out.println("2");
             //Anweisungen mit den Objekten und Variablen
             break;
         case "3": System.exit(0);
             break;
         default:
             System.out.println("n/a");
             break;
     }
}while(!Objects.equals(auswahl, "3"));
 
Zuletzt bearbeitet:
Ok ich habe es rausgefunden!
man muss in die catch Anweisung noch zusätzlich ein input.next(); einfügen damit es funktioniert.
Also:
Java:
Scanner sc = new Scanner(System.in);

....
try{
    auswahl = sc.nextInt();
    }
    catch(InputMismatchException e){
        System.out.println("Wront input");
        sc.next();
    }
        switch(auswahl)
....{
 

Neue Themen


Zurück
Oben