blondi2108 Geschrieben 27. September 2007 Teilen 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(); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Cadpax Geschrieben 27. September 2007 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 27. September 2007 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 27. September 2007 Autor Teilen 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 :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Cadpax Geschrieben 27. September 2007 Teilen 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) { .... } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 27. September 2007 Autor Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Cadpax Geschrieben 27. September 2007 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 27. September 2007 Autor Teilen Geschrieben 27. September 2007 Danke.. Jetzt weiß ich wem ich demnächst auf den Senkel gehen werde.. :upps Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Naberius Geschrieben 28. September 2007 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 28. September 2007 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 5. Oktober 2007 Autor Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 5. Oktober 2007 Teilen Geschrieben 5. Oktober 2007 Um Aktionen abzufangen benötigst du einen ActionListener Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 5. Oktober 2007 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 5. Oktober 2007 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 5. Oktober 2007 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 5. Oktober 2007 Teilen Geschrieben 5. Oktober 2007 Code kopiert in Eclipse eingefügt. Auf Ausführen geklickt und läuft. Was für Fehler bekommst du denn ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blondi2108 Geschrieben 8. Oktober 2007 Autor Teilen 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.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.