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
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.
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
nöö, muss nur addieren, subtrahieren und multiplizieren können ich glaub du hast meinen fehler entdeckt, muss ich gleich probieren
war doch nicht, das was ich geglaubt habe, aber ich denke es hat mit print() zu tun, komm nur noch nicht dahinter
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ß.
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!
Ich hab mal in meine alten Programm geguckt und deinen Quelltext ein wenig in diese Richtung modifiziert. Mit den Zeilen
1 | Scanner in; |
2 | try { |
3 | in = new Scanner((new java.io.BufferedReader(new java.io.InputStreamReader |
4 | |
5 | (System.in))).readLine()); |
6 | } catch (java.io.IOException e) { |
7 | System.out.println("FALSCHE EINGABE"); |
8 | return; |
9 | } |
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 ;-)
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
Nee, das op nicht in die While-Bedingung sondern direkt in den Schleifenkörper. In der Bedingung statt hasNextDouble einfach hasNext nehmen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.