Ich möchte Instanzmethoden für eine Klasse "Bruch" erstellen. Hierbei soll der Bruch mit einer anderen Zahl multipliziert, dividiert, addiert, subtrahiert werden.
Nun soll den jeweiligen Methoden nur einen Parameter vom Typ Bruch übergeben werden, und es soll eine neue Instanz vom Typ Bruch zurückgegeben werden, die das Ergebnis enthält.
Hier zeigt mir eclipse aber einige Fehlermeldungen. Ich verstehe nicht ganz, wie ich es hinkriege, dass ich einen Parameter vom Typ Bruch übergeben kann. Dachte das würde klappen, wenn ich oben eine variable nBruch erzeuge.
Wie multipliziert man denn Brüche? Du hast doch jeweils einen Zähler und Nenner der beiden Bruch-Objekten, damit sollte sich das umsetzen lassen (int * int geht schließlich).
ich denke auch nicht dass du ein neues Objekt erstellen sollst in der Methode, sondern es bezieht sich auf den bruch auf den du die Methode aufrufst (this!)
Also muss ich den zaehler von "nBruch" mit dem zaehler von "neuerBruch" multiplizieren (beim nenner das gleiche)?
Wenn ich keinen neuen Bruch instanziere, welche Brüche multipliziere ich dann miteinander? Ich weiß schon was du meinst, da ich ja in der Testklasse nachher irgendwas wie "testBruch.mul(nBruch)" haben werde ...
Aber wie schreibe ich das? ???:L (das würde mir wahrscheinlich auch bei meinen anderen Methoden helfen, da ich jeweils den "aktuellen Bruch" in den Methoden weiterbearbeiten soll.
und in welche Variable speichere ich das dann?
Kriege dann immer die Fehlermeldung "Can not convert from int to 'Bruch'" ... Da ich ja versuche das ganze wieder in einem Bruch zu speichern, der dann ausgegeben werden soll.
Also mal langsam. Du benötigst eine Zaehler und eine Nenner variable. Da speicherst du dann jeweils einen Wert rein aus dem Objekt was du anlegst.. z.B.
Java:
Bruch b1 =newBruch(1,2);
Somit hast du jetzt einen Bruch 1/2
Jetzt möchtest du den b1 mit einem anderen Bruch multiplizieren.
Sprich du legst einen 2. Bruch an
Java:
Bruch b2 =newBruch(1,4);
Dann multiplizierst du die beiden miteinander.
Java:
b1.multipliziere(b2);
Jetzt gehst du in deine Bruch Klasse und dort hast du den aktuellen Bruch b1 zerteilt in Zaehler und Nenner. Dein Konstruktor muss natürlich dementsprechend aufgebaut sein.
Dann schreibst du deine multipliziere Methode.
Z.B. so:
und gebe dann wieder nBruch aus? oder welchen Bruch.
Eine Frage noch. Das mit dem "this." ... habe in meinen Methoden jetzt fast alle mit nem neu instanzierten Bruch geschrieben, obwohl ich ja den "aktuellen" Bruch benutzen soll (wusste aber nicht genau was das heißen soll)
Hast du überhaupt mal richtig gelesen was ich dir geschrieben habe?
Und wieso einen Bruch als double Wert? Du möchtest den Bruch in eine Dezimalzahl umwandeln oder was? Dann kannst du auch direkt mit Dezimalzahlen rechnen.. wofür dann der Aufwand über die Brüche?
Zum ausgeben kannst du dir einfach ne toString methode schreiben...
Also b1 und b2 würde ich dann in einer Testmethode initialisieren. Und darauf dann meine Methoden anwenden.
z.B. b1.mul(nBruch);
Allerdings müssen dafür meine Methoden ja erst richtig sein?!
Das mit dem double-Wert ist reine Spielerei, hat keinen tieferen Sinn, außer halt zu lernen Instanzmethoden zu schreiben.
Edit: Ja die toString Methode habe ich schon geschrieben
Deine Methode gibt nBruch zurück. Warum? Du schreibst deine Ergebnisse ja in this.zaehler und this.nenner und nicht in nBruch..
Was soll deine Methode wert denn genau machen? Einfach die Umrechnung in Dezimal?
Nimmst den aktuellen Bruch bestehend aus this.zaehler und this.nenner und rechnest den Bruch in Dezimal um. Kannst du mit oder ohne returnwert machen.. bleibt dir frei gestellt.