Java abfangen von fehlerhaften eingabe
Hey Leute! ich bin grade einen kleinen Taschenrechner am programmieren und will aber Buchstaben und Zeichen und sowas mit try catch abfangen.. hab das ganze in einer eigenen klasse geschrieben aber wenn ich das programm jetzt starte und zum testen einen buchstaben eingebe, wird der programm abgebrochen und ich weiß einfach nicht, was an meinem code falsch ist.. hier zur vorschau:
public static int set1(int intNum1, String strNum1) {
Scanner rec= new Scanner(System.in);
String strNum11 = rec.nextLine();
try {
intNum1 = Integer.parseInt(strNum11);
System.out.println("Ihre Zahl lautet: " + intNum1);
} catch (Exception e) {
String intNum11 = rec.next();
System.out.println(intNum11
+ " ist keine Zahl. Versuchen sie es erneut.");
rec.close();
}
return intNum1;
}
2 Antworten
Deine Methode ist etwas undurchsichtig.
Als erstes ist die Methode statisch. Ich kenne den Kontekt nicht, aber ich halte es bei einem objektorientierten Taschenrechner eher für unnötig statische Methoden zu definieren.
Ansonsten hat deine Methode 2 Parameter, die inhaltlich (scheinbar) das gleiche repräsentieren - nur die Art, wie die Information vorliegt, ist unterschiedlich. In deiner Methode wird außerdem der Parameter "strNum1" überhaupt nicht verwendet und der Parameter "intNum1" wird nie ausgewertet, sondern direkt überschrieben. Warum sind diese Parameter dann definiert?
Im catch-Zweig definierst du die Variable "intNum11" vom Typ String. Mal abgesehen, dass diese Namensgebung verwirrend ist, wirft die Methode "Scanner.next()" eine "NoSuchElementException", wenn kein weiteres Wort (Token) vorhanden ist. Das äußert sich meist in einem Programmabsturz.
Einfach so abgebrochen? Wohl kaum, oder? Was passiert genau?