www.mikrocontroller.net

Forum: PC-Programmierung Java Anfängerfrage - Programm läuft nicht


Autor: Schnee ++ (mustermann)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

mein programm läuft nicht, zuerst hat alles geklappt, dann habe ich in 
der class etwas verändert und (bin mir nicht mehr sicher vll auch im 
main) dann bekam ich 3 fehlermeldungen (main Calculator im Anhang)

Calculator.java:17: cannot find symbol
symbol  : method out()
location: class Complex
                        a.out();
                         ^
die selbe meldung für die zeile 46 und 83

würde mich über konstruktive kritik freuen (anfänger), vll komm ich auch 
selbst drauf, ist schon spät
hab nur etwas bammel, weil ich das programm heute noch abgeben muss

lg

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Offenbar kennt deine Klasse "Complex" keine Methode out(). Das letzte 
mal, als du hier Quellcode veröffentlicht hast hieß die noch print(), 
hast du die auch überall umbenannt?

Falls dus nicht hinbekommst - gib noch die Klasse Complex her, dann kann 
mans wenigstens verstehen.

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, und kann deine Klasse Complex gar nicht dividieren?

Ich erinnere mal an die schöne Erweiterung
Es ist also eine komplexe Multiplikation und eine Division durch einen 
reellen Term. Das bekommt man hin.

Muss man natürlich aufpassen, dass man nicht durch Null teilt, aber 
ansonsten mag ich Divisionen :D

Autor: Schnee ++ (mustermann)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
nöö, muss nur addieren, subtrahieren und multiplizieren können

ich glaub du hast meinen fehler entdeckt, muss ich gleich probieren

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
war doch nicht, das was ich geglaubt habe, aber ich denke es hat mit 
print() zu tun, komm nur noch nicht dahinter

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei mir lässt es sich compilieren, nur durch den Code der 
Calculator.java steig ich einfach nicht richtig durch. Dieses Gewirr von 
else ifs... (vielleicht würden ein paar Klammern an den richtigen 
Stellen helfen?)

So langsam steige ich durch, was da passiert, nur leider nicht, was 
passieren soll. Dein a wird am Anfang als Complex(0,0) (am Anfang sind r 
und i beide Null) eingerichtet und nur im Falle, dass kein 
Rechenoperator kommt durch die Eingabe ersetzt. Da ist doch was faul. 
Das mit dem Operator verstehe ich dann allerdings nicht mehr, stehe mit 
der Scanner-Klasse ein wenig auf Kriegsfuß.

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies dir auf jeden Fall noch einmal 
http://java.sun.com/javase/6/docs/api/java/util/Scanner.html durch und 
überlege dann, was du falsch gemacht hast!

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal in meine alten Programm geguckt und deinen Quelltext ein 
wenig in diese Richtung modifiziert. Mit den Zeilen
        Scanner in;
  try {
      in = new Scanner((new java.io.BufferedReader(new java.io.InputStreamReader

(System.in))).readLine());
  } catch (java.io.IOException e) {
      System.out.println("FALSCHE EINGABE");
      return;
  }

bekommst du einen Scanner, der die erste Zeile, die auf der 
Standardeingabe eingegeben wird, parst. Ich denke das ist was du willst, 
wenn nicht bitte melden. Bitte so nicht in größeren Programmen 
verwenden, da die Reader nicht geschlossen werden. Macht aber in dem 
Fall nix, weil beim Programmende eh alle Ressourcen freigegeben werden, 
und das Programmende ist ja nicht so weit weg.

Wie bereits gesagt sollte das a=new Complex(r,i) hinter das Einlesen 
von r und i, sonst ist es sinnlos. Die Abfrage vor der While-Schleife, 
ob das nächste Dingens ein Double ist, kann weg. Die Zeile op=... nimmst 
du gefälligst in die While-Schleife rein, deren Bedingung nicht 
hasNextDouble sondern hasNext lauten sollte. So, ich hoffe das reicht.

Und gewöhn dir bitte einen besseren Einrückungsstil an, üblich ist eine 
Einrückung von z.B. vier Leerzeichen pro Ebene, und dann auch dran 
halten, dann fallen einem falsch gesetzte Klammern leichter auf. Moderne 
IDEs wie Eclipse haben da einen Befehl, der das automatisch schön 
formatiert ;-)

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WOW! Danke für deine Mühe!
Ich schreib den Code im JEdit, der macht automatisch eine Einrückung um 
einen Tabulator.
Eine Frage hab ich noch, wie schaut dann die while Schleife aus?

while (op = in.next().charAt(0);()){
if(!in.hasNextDouble()){
System.out.println("FALSCHE EINGABE");
return;}
}

hast du das so gemeint?

lg

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee, das op nicht in die While-Bedingung sondern direkt in den 
Schleifenkörper. In der Bedingung statt hasNextDouble einfach hasNext 
nehmen.

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke nochmal für dein Engagement!

lg, schnee

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.