blondi2108 Geschrieben 27. September 2007 Geschrieben 27. September 2007 Hi Ihr, ich habe erst im August meien Ausbildung als Fachinformatikerin Ae angefangen und mir mehr oder weniger die ersten Start -Versuche von Java selber beigebracht. Nun hat mich mein Ausbilder gebeten einen EC-Automaten zu programmieren. Dies habe ich fast Fehlerfrei bewältigt, doch mein Ausbilder hatte etwas zu meckern... Bei der folgenen try-catch Abfrage soll ich laut seinen Aussagen einen Fehler gemacht haben(etwas vergessen haben) Er fragte: Was ist wenn ioexeptions und number exeptions nicht zutreffen?.. laufzeitfehler.. :confused: Kann mir jemand helfen und mir schreiben, was ich in dem Code noch einfügen muss? Hier ein Ausschnitt..DANKE:) System.out.println("Das Konto ist leer, drücken Sie [0] zum einzahlen des Geldes!"); try { zahl = Integer.parseInt(stdin.readLine()); } catch(IOException e) { System.out.println("Falsche Eingabe"); starteingabe(); } catch(NumberFormatException e) { System.out.println("Falsche Eingabe"); starteingabe(); }
Cadpax Geschrieben 27. September 2007 Geschrieben 27. September 2007 [ CODE ] und [ /CODE ] machen das ganze übersichtlicher. ;-) catch(Exception e) Sollte zumindest. Lange lange isses aber her. ;-) *edit* mal grad fix nachgeschaut Galileo Computing :: Java ist auch eine Insel – 7.2 Die Klassenhierarchie der Fehler Tutorial / Java Grundlagen / Exceptions Wenn du schlauer werden magst. ;-) Mit freundlichen Grüßen, Cadpax
geloescht_Newlukai Geschrieben 27. September 2007 Geschrieben 27. September 2007 Ich stell' mir aber eher die Frage, wie denn da eine andere Exception fliegen soll?!? Die möglichen Exceptions werden von den Methoden, die Du nutzt, vorgegeben. Andere sind IMHO nicht möglich. Sicher kannst Du die beiden Blöcke zu einem Blocj zusammenfassen, da sie eh' das gleiche tun. Aber das ist ein anderes Paar Schuhe.
blondi2108 Geschrieben 27. September 2007 Autor Geschrieben 27. September 2007 Hi Jungs, jetzt mal für ne Blondine, verlangt noch nicht so viel von mir... Was muss, soll ich jetzt machen.. ist wirklich nen blödes Gefühl da morgen hin zu gehen ohne Lösung!!! Also BITTE SOS helft mir :-)
Cadpax Geschrieben 27. September 2007 Geschrieben 27. September 2007 Habe ich geschrieben. ;-) catch(Exception e) fängt dir alle Fehler auf, die nicht auf die zutreffen, die du abfängst. try { zahl = Integer.parseInt(stdin.readLine()); } catch(IOException e) { System.out.println("Falsche Eingabe"); starteingabe(); } catch(NumberFormatException e) { System.out.println("Falsche Eingabe"); starteingabe(); } catch(Exception e) { .... }
blondi2108 Geschrieben 27. September 2007 Autor Geschrieben 27. September 2007 Kannst du mir jetzt auch noch kurz erklären, was ich damit abfange? mache? DANKE... es gibt ja doch noch Engel...
Cadpax Geschrieben 27. September 2007 Geschrieben 27. September 2007 Kannst du mir jetzt auch noch kurz erklären, was ich damit abfange? mache? DANKE... es gibt ja doch noch Engel... Überflieg oben die beiden Links, dann sollte das klar werden. ;-) Wenn dann noch fragen sind, Frag.
blondi2108 Geschrieben 27. September 2007 Autor Geschrieben 27. September 2007 Danke.. Jetzt weiß ich wem ich demnächst auf den Senkel gehen werde.. :upps
Naberius Geschrieben 28. September 2007 Geschrieben 28. September 2007 Ich stell' mir aber eher die Frage, wie denn da eine andere Exception fliegen soll?!? Die möglichen Exceptions werden von den Methoden, die Du nutzt, vorgegeben. Andere sind IMHO nicht möglich. Sicher kannst Du die beiden Blöcke zu einem Blocj zusammenfassen, da sie eh' das gleiche tun. Aber das ist ein anderes Paar Schuhe. Sehe ich 100% genau so. Die Erweiterung mit "catch (Exception e)" sehe ich für total überflüssig an! Im übrigen versuche ich catch(Excep...) im code zu vermeiden, da es den Code unleserlicher macht und auch eine Fehlerquelle darstellen kann, falls nämlich eine Exception an dieser stelle versickert an die nicht gedacht wurde. Ich bin der Meinung man sollte bewusst einzelne Exeptions fangen und nicht einfach alle (Ausnahmen gibt es natürlich!). Evtl. könnte dein Ausbilder auch einen fehlenden finally block vermissen. Da du ja hier einen IO zugriff machst sollte nicht vergessen werden diesen IO stream auch wieder zu schließen. so in der Art: try { ... } catch (...) { ... } finally { io.close(); } viele grüße, nab.
dr.dimitri Geschrieben 28. September 2007 Geschrieben 28. September 2007 Hi, also das würd ich auch beanstanden, allerdings nicht weil ein Exceptionhandler fehlt. Die Fehlermeldung ist wenig aussagekräftigRekursiver Aufruf In beiden Fehlerfällen gibst Du aus "Falsche Eingabe" Das stimmt aber z.B. bei einer IOException nicht. Hier muss dem Benutzer mitgeteilt werden, dass etwas grundlegendes nicht stimmt (Die Standardstreams von Java funktionieren hier nicht) und dann das Programm auch beendet werden. Zum Rekursiven Aufruf. Du rufst im Fehlerfall deine eigene Methode wieder auf. Das nennt sich Rekusion und hat in deinem Fall zur Folge, dass bei genügend Fehleingaben irgendwann ein OutOfMemoryError geworfen wird. Du solltest das lieber in einer Schleife erledigen, die erst verlassen wird, wenn die Eingabe korrekt war. Etwa so: boolean isCorrect=false; do { //Eingabe und Eingabeprüfung isCorrect=true; catch(NumberFormatException e) {/*Fehlermeldung*/} }while(isCorrect==false); isCorrect wird also nur auf true gesetzt, wenn keine NumberFormatException auftritt und die Schleife damit beendet. Andere Exceptions können hier eigentlich nicht auftreten und einen Error fängst Du mit einem catch(Exception e) auch nicht. Dazu müsstest Du Throwable catchen und da sollte man schon genau wissen wie man dann weiter macht. Meiner Meinung nach fehlt hier kein weiterer Exceptionhandler und dein Ausbilder hat unrecht. Da du ja hier einen IO zugriff machst sollte nicht vergessen werden diesen IO stream auch wieder zu schließen. Genau. Du schließt den Standardeingabestream... :uli Dim
blondi2108 Geschrieben 5. Oktober 2007 Autor Geschrieben 5. Oktober 2007 Hi Ihr, gaaaanz lieben Dank an alle! Super Tips die ich auch umgesetzt habe!!! Jetzt geht es weiter mit dem EC_Automaten.. Nun möchte er von mir eine Benutzeroberfläche haben.. Seit gestern habe ich zumindest schon die dazugehörigen Schaltflächen gebaut.. Aber leider erklärt mir kein Tutorial genau (für Blondinen geeignet) wie ich den Schaltflächen jetzt die auszuführenden Befehle erteile!!! Jemand nen Tip, wo ich das Blondinen gerecht nachlesen kann... Danke... und in 6 Stunden ist Wochenende...
Pinhead Geschrieben 5. Oktober 2007 Geschrieben 5. Oktober 2007 Um Aktionen abzufangen benötigst du einen ActionListener
blondi2108 Geschrieben 5. Oktober 2007 Autor Geschrieben 5. Oktober 2007 Danke für den Tip... hat jemand zufällig nen kurzen Quellcode zur Hand, in dem ich die direkte Umsetzung sehen kann... DANKE
Pinhead Geschrieben 5. Oktober 2007 Geschrieben 5. Oktober 2007 import java.awt.*; import java.awt.event.*; public class AL extends Frame implements WindowListener,ActionListener { TextField text = new TextField(20); Button b; private int numClicks = 0; public static void main(String[] args) { AL myWindow = new AL("My first window"); myWindow.setSize(350,100); myWindow.setVisible(true); } public AL(String title) { super(title); setLayout(new FlowLayout()); addWindowListener(this); b = new Button("Click me"); add(; add(text); b.addActionListener(this); } public void actionPerformed(ActionEvent e) { numClicks++; text.setText("Button Clicked " + numClicks + " times"); } public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } public void windowOpened(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void windowClosed(WindowEvent e) {} } [/PHP] Quelle
blondi2108 Geschrieben 5. Oktober 2007 Autor Geschrieben 5. Oktober 2007 Danke.. Scherzkeks.. habe ich schon probiert, bekomme da aber Fehler beim complimentieren angezeigt.. und für mich als Anfängerin finde ich die Fehler nicht :upps
Pinhead Geschrieben 5. Oktober 2007 Geschrieben 5. Oktober 2007 Code kopiert in Eclipse eingefügt. Auf Ausführen geklickt und läuft. Was für Fehler bekommst du denn ?
blondi2108 Geschrieben 8. Oktober 2007 Autor Geschrieben 8. Oktober 2007 ja ja ich mache meiner haarfarbe wieder ale ehre.. danke.. bei problemen geh ich euch ab mittwoch wieder auf den keks.. erst schule ... KUSS.... bin echt froh hier mal zwischendurch fragen zu können..
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden