Hallo,
ich muss folgende Aufgabenstellung lösen:
Eine komplexe Zahl soll durch eine unveränderliche Klasse namens Complex dargestellt werden. Diese Klasse besitzt 2 Datenelemente vom Typ double die den Realteil und den Imaginärteil der komplexen Zahl repräsentieren. Diese Datenfelder werden einmal gesetzt und sollen im Programmverlauf nicht mehr verändert werden können. Benutzen Sie hier die entsprechenden Modifier bei der Definition der Datenelemente.
Diese Klasse soll die folgenden (öffentlichen) Methoden besitzen:
Zuerst wird eine komplexe Zahl als Startwert eingelesen. Danach werden abwechselnd ein Operator und eine komplexe Zahl eingelesen und die angeforderte Rechenopertion durchgeführt.
Ich bin die Aufgabenstellung nun wie folgt angeganen:
.)Hab zuerst eine Klasse Calculator und Complex definiert
.)In der Complex Klasse sind nun alle Rechenmethoden die verlangt sind, definiert. Ich hab die Datenelemente Realteil und Imaginärteil wie folgt definiert:
Weil laut Aufgabenstellung dürfen sie ja später nicht mehr geändert werden.
Mein PROBLEM ist jetzt das ich ja abwechselnd ein Operator und eine komplexe Zahl einlesen muss. Das hab ich wie folgt realisiert:
Meine Frage ist jetzt nur weil ich ja folgendes schreibe:
und später
dazuzusagen ist noch, dass meine add Methode so aussieht:
Da ich ja ein neues Objekt vom Typ Complex zurückbekomme sollte ich es doch eigentlich so aufrufen:
Weil mit meiner Variante geht doch irgendwie der Sinn der unveränderlichen Klasse verloren, weil ich meine alten Werte überschreibe. Nur mein Problem ist halt das ich mit den Objekt was ich zurückbekomme ja laut Aufgabenstellung weiterrechnen muss.
Habt ihr vl einen Tipp für mich??
Danke
ich muss folgende Aufgabenstellung lösen:
Eine komplexe Zahl soll durch eine unveränderliche Klasse namens Complex dargestellt werden. Diese Klasse besitzt 2 Datenelemente vom Typ double die den Realteil und den Imaginärteil der komplexen Zahl repräsentieren. Diese Datenfelder werden einmal gesetzt und sollen im Programmverlauf nicht mehr verändert werden können. Benutzen Sie hier die entsprechenden Modifier bei der Definition der Datenelemente.
Diese Klasse soll die folgenden (öffentlichen) Methoden besitzen:
- public Complex add(Complex c), die die Zahl c dazuaddiert und als neues Objekt zurückgibt.
- public Complex sub(Complex c), die die Zahl c subtrahiert und als neues Objekt zurückgibt.
- public Complex mul(Complex c), die die komplexe Zahl mit einer komplexen Zahl c multipliziert und das Produkt als neues Objekt zurückgibt.
Zuerst wird eine komplexe Zahl als Startwert eingelesen. Danach werden abwechselnd ein Operator und eine komplexe Zahl eingelesen und die angeforderte Rechenopertion durchgeführt.
Ich bin die Aufgabenstellung nun wie folgt angeganen:
.)Hab zuerst eine Klasse Calculator und Complex definiert
.)In der Complex Klasse sind nun alle Rechenmethoden die verlangt sind, definiert. Ich hab die Datenelemente Realteil und Imaginärteil wie folgt definiert:
Code:
private final double realPart;
private final double imagPart;
Mein PROBLEM ist jetzt das ich ja abwechselnd ein Operator und eine komplexe Zahl einlesen muss. Das hab ich wie folgt realisiert:
Code:
while (reader.hasNext()) {
// look for the operand
if (reader.hasNext()) {
char operator = reader.next().charAt(0);
// look for real part of the second complex number
if (reader.hasNextDouble()) {
realZ2 = reader.nextDouble();
// look for imaginary part of the second complex number
if (reader.hasNextDouble()) {
imagZ2 = reader.nextDouble();
// pass user values on the second complex number
z2 = new Complex(realZ2, imagZ2);
// execute the selected operation
if (operator == '+') {
z2 = z1.add(z2);
} else if (operator == '-') {
z2 = z1.sud(z2);
} else if (operator == '*') {
z2 = z1.mult(z2);
} else
.........
}
Code:
z2 = z1.add(z2);
Code:
z1 = z2;
Code:
public Complex add(Complex c) {
double real = realPart + c.realPart;
double imag = imagPart + c.imagPart;
Complex sum = new Complex(real, imag);
return sum;
}
Code:
Complex z1 = new Complex(4.5, 6.7);
Complex z2 = new Complex(6.8, 9.0);
Complex z3;
z3 = z1.add(z2);
Habt ihr vl einen Tipp für mich??
Danke