Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
Ich habe in der Uni try/catch kennengelernt und ein einfaches Beispiel dort gemacht was auch so weit lief. zuhause importiert in mein Eclipse wird nun eine InputMismatchException angezeigt!?
Hier der Code:
Java:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Ausnahmen {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("Geben sie eine Ganzzahl ein");
int eingabe = 0;
try {
eingabe = scan.nextInt();
} catch (InputMismatchException e) {
System.out.println("Depp!");
}
System.out.println("Geben sie noch eine Ganzzahl ein");
int eingabe2 = scan.nextInt();
try {
System.out.println(eingabe / eingabe2);
} catch (ArithmeticException e) {
System.out.println("DU DEPP!");
}
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());
Date date = new Date();
System.out.println(date);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(df.format(date));
}
}
Das unten drunter tut eig nix zur Sache habe ich nur vollständigkeitshalber mit reingenommen. Ich gebe hier beispielsweise bei der ersten Eingabe n Buchstabe ein, jez kommt auch meine catch anweisung allerdings dann auch nochmal:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Ausnahmen.main(Ausnahmen.java:25)
An invocation of this method of the form nextInt() behaves in exactly the same way as the invocation nextInt(radix), where radix is the default radix of this scanner.
Returns:
the int scanned from the input
Throws:
InputMismatchException - if the next token does not match the Integer regular expression, or is out of range
NoSuchElementException - if input is exhausted
IllegalStateException - if this scanner is closed
desshalb muss Zeile 24 auch innerhalb des try Blockes, welcher bei Zeile 26 beginnt
Du solltest darauf achten, dass die in der Fehlermeldung referenziere Codezeile mit dem hier geposteten Code übereinstimmt.
Vermutlich ist die Zeile 25 des Originalcodes hier die Zeile 24.
Das erste scan.nextInt(); schlägt aufgrund der Falscheingabe fehl --> der Code läuft in den catch Block und läuft danach weiter. Da der erste Einleseversuch nicht abgeschlossen wurde wird beim nächsten scan.nextInt(); in Zeile 24 versucht direkt einzulesen. Hier wird eine mögliche Fehleingabe nicht abgefangen --> Exception
Ok das konnte ich beheben jez bin ich allerdings auf einen neuen Fehler gestoßen:
Java:
// Menü
boolean beenden = false;
while (!beenden) {
menuAnzeigen();
try {
int eingabe = scanner.nextInt();
switch (eingabe) {
case 1:
Dokumente.dokumenteAnzeigen();
break;
case 2:
boolean erfolg = false;
erfolg = Dokumente.dokumentAnlegen();
System.out.print("Erfolgreich angelegt: ");
System.out.println(erfolg);
break;
case 3:
System.out.print("Bitte geben sie den Namen des zu löschenden"
+ " Dokuments an: ");
String antwort = scanner.next();
int id = Dokumente.gibDokId(antwort);
Dokumente.dokumentLoeschen(id);
break;
case 4:
System.out.print("Wirklich beenden? 'ja [1]'/'nein [0]' ");
beenden = EingabeKontrollen.jaNeinEingabe();
break;
default :
System.out.println("Falsche Eingabe.");
break;
}
} catch (InputMismatchException e) {
System.out.println("DEPP!");
}
}
}
}
Mein Problem ist, dass sich das immer wiederholt, wenn ich hier beispielsweise wieder einen Buchstaben eintippe kommt jedesmal meine catch-Anweisung und dann erneut das menü inner console was sich dann ewig wiederholt und nich terminiert =(
ah ok danke funktioniert und wenn ich menuAnzeigen() noch in die catch anweisung mit rein nehme dann kann man problemlos weiterarbeiten. super danke!
edit: aber mist dann hab ich ja garkeine eingabe, dann zeigt er das blos an hmm...
Gibt es da ne Möglichkeit das sich das Menü weiter aufruft und man quasi das nochmal von neuem eingeben kann?nach der catch anweisung sozusagen wieder ne eingabe kommt?