www.mikrocontroller.net

Forum: PC-Programmierung hilfe bei java programm


Autor: anfänger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi!

bin totaler programmierneuling und brauche hilfe!
kompilieren lässt es sich, aber beim ausführen erhalte ich folgende 
Fehlermeldung

1 3 4 4 5 6 - + * s /
Exception in thread "main" UpnException: ?
at Upn.operator(Upn.java:25)
at Main.main(Main.java:21)

kann mir wer sagen was ich falsch gemacht habe bzw. wie es richtig 
stelle?

danke

Autor: Markus V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi anfänger!

Dein Fehler liegt in der Datei Upn.java, Zeile 46. Der Operator 's' legt 
kein Ergebnis auf dem Stack ab. Dadurch kommt es beim Ausführen des 
Operators '/' zu einer Exception, es fehlt ein Operand auf dem Stack.

Grüße aus KA
Markus

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI!

der operator s soll die 2 obersten elemnte des stack tauschen
mein fehler hängt mit den InputMismatch und NoSuchElement Exceptions 
zusammen,(denke ich) da die upn-exc in main gefangen und die message 
ausgegeben werden soll. die exceptions wrden aber bei mir geworfen...

weisst du wie ich das ändern kann?
Laaaaaaaaanger Taaaag!

lg

Autor: Java (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach
public static void main ( String ... args ) throws UpnException { 
statt
public static void main ( String ... args ) throws UpnException, InputMismatchException, NoSuchElementException{
schreiben. Damit greift dein Catch und es kommt nur die UpnException 
nach außen.

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das hab ich schon versucht, aber es kommt wieder dieselbe fehlermeldung, 
trotzdem danke

Autor: Markus V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin anfänger!

Ich hatte gestern leider keine Zeit mehr, Dir zu antworten...

Leider unterliegst Du (und auch Java (Gast))einem gewaltigen Irrtum: In 
main werden lediglich die Exceptions InputMismatchException und 
NoSuchElementException behandelt (gefangen). Der catch-Block für die 
UpnException fehlt.
    ...
    catch (NoSuchElementException ex){
        throw new UpnException("FALSCHE EINGABE");
    }     
    catch (UpnException ex){
        //Behandlung der Exception...
    }
    ...
Die Zeile
    public static void main ( String ... args ) throws UpnException, InputMismatchException, NoSuchElementException
teilt dem Compiler mit, daß ein Aufrufer der Methode main diese 
Exceptions behandeln sollte (bei Exceptions, die von RuntimeException 
ableiten) bzw. behandeln muß (bei Exceptions, die von Exception 
ableiten). Dies ist bei einem main aber nicht wirklich sinnvoll (die 
Exceptions können von der JVM lediglich in Form einer Ausgabe der 
Exception auf die Console "behandelt" werden).

Dir ist auch klar, daß durch die Lage der while-Schelife im try-Block 
Dein Programm beim Auftreten der ersten Exception beendet wird? Wenn das 
Programm weiter laufen soll, muß try-catch in die while-Schleifen 
hinein.

Gruß aus KA
Markus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.