7. April 201015 j jaein. Dir wird der Fehler zwar angezeigt aber das Programm verlässt den catch Block danach und geht direkt weiter im code--> Du bekommst keine Möglichkeit dieselbe Zahl nochmals korrekt einzugeben. Versuchs mal mit ner Schleife die Deinen Tryblock umschließt. Gibt wohl noch andere Methoden, aber das scheint mir das einfachste Bearbeitet 7. April 201015 j von Bjarki
7. April 201015 j wie ist es hiermit. klappt auch try { System.out.println("Geben sie bitte die erste Zahl ein"); zahl1 = Double.parseDouble(in.readLine()); } catch (NumberFormatException g) { System.err.println("FEHLER:Bitte geben Sie eine Zahl ein:"); zahl1 = Double.parseDouble(in.readLine()); } try { System.out.println("Geben sie bitte die zweite Zahl ein"); zahl2 = Double.parseDouble(in.readLine()); } catch (NumberFormatException f) { System.err.println("FEHLER:Bitte geben Sie eine Zahl ein:"); zahl2 = Double.parseDouble(in.readLine()); } Bearbeitet 7. April 201015 j von musti
7. April 201015 j und wenn dann im Catch eine falsche Zahl eingegeben wird stehst du wieder am Anfang Halte dich mal an den Vorschlag von Bjarki
7. April 201015 j Hm ne, da hast Du genau 2 chancen und bei der 2ten falschen Eingabe hauts Dir ne Exception um die Ohren. Mit Schleifen meint ich sowas Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.7 Schleifen
7. April 201015 j das mim programmieren ist wirklich nicht so einfach und für einen anfäger wie ich erst recht Bearbeitet 7. April 201015 j von musti
7. April 201015 j @musti: Es ist einfach, nur muss man eben das Problem erkennen und dann das Problem in einzelne Schritte zerlegen, die man in Befehle eingeben kann. Du kannst nicht erwarten, dass der Computer für Dich ein Problem löst, wenn Du es ihm nicht beibringen kannst. Anhand Deines Beispiel: Der Computer soll Zahlen berechnen, Du musst ihm also sagen, wie er rechnen soll. Woher er die Daten bekommt und was er bei Fehlern machen soll. Typisch ist EVA (Eingabe Verarbeitung Ausgabe), d.h. Daten einlesen + prüfen, Verarbeiten und Ausgeben. Egal wie komplex man heute arbeiten kann, letztendlich ist es immer noch dieses Prinzip. Es ist immer für den Anfänger das Programm / Problem auf einem Zettel auf zu schreiben. Du könntest ja Deinen Rechner einmal dahin erweitern, dass er mit Brüchen rechnen kann also z.B. 1/2 + 1/4 und dann auch 3/4 ausgibt.
7. April 201015 j klappt auch Du begehst den Fehler, nur das zu prüfen, was angesichts des Codes auch funktionieren kann. Genauso zu prüfen sind aber auch die Fälle, die niemals funktionieren können, wie z.B. die Division durch 0, Eingabe von Zahlen, leere Eingabe und und und... Wie Du aber darauf reagieren möchtest, musst Du selber wissen. Das Programm einfach abstürzen zu lassen, ist natürlich keine gute Idee. Es kann auch einfach mit einer Fehlermeldung beendet werden, oder aber halt solange prüfen bis ein verwertbarer Wert eingegeben wird. Beides ist aber mit ein wenig Grundlagenwissen einfach realisierbar (auch wenn ich spontän nicht wüsste, wie man in Java ein try-catch mit einer while-Schleife paaren könnte und eher zur Rekursion greifen würde). Kleiner Tipp: denke auch an eine Ausstiegsmöglichkeit für den Nutzer und vermeide Endlosschleifen.
7. April 201015 j Statt draufloszuklimpern, solltest Du Dir am besten ersteinmal einen PAP auf Papier kritzeln, um zu sehen, was Du von Deinem Programm erwartest; Dir anschließend überlegen, was in Deinem Programm für Fehler auftreten können, die nicht durch den Benutzer hervorgerufen werden und zu guter letzt, eine Art whitelist an Benutzereingaben erstellen, so daß Du nur mit für Dein Programm geeignetem Input arbeitest und alles andere mit einer Fehlermeldung ahndest.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.