Rechnen mit komplexen Zahlen

Status
Nicht offen für weitere Antworten.

F34RL355

Mitglied
Hallo !

Ich hab versucht eine Klasse Complex zu erstellen, mit einer Methode die mir 2 komplexe Zahlen addiert. Damit es ein bisschen schwieriger wird, hab ich Realteil und Imaginärteil mit dem Modifier final belegt.

Java:
class Complex{  
  
  final int real;
  final int imag;
  
  Complex(int r, int i){
    real = r;
    imag = i;
    
  }  
  
  public Complex add(Complex c){     
    Complex d = new Complex(this.real+c.real , this.imag+c.imag);
    return d;
  }
  
  public String toString(){
  return d.real + "" + d.imag;
  
  }
}

Das Problem ist, dass der Compiler d.real + d.imag nicht findet. Ich versteh aber nicht, warum er die Variablen nicht findet. Hoffe mir kann hier jemand weiterhelfen oder mir wenigstens einen Tipp geben, steh im Moment ein bissl an :(
 

AmunRa

Gesperrter Benutzer
Weil es in der toString() methode die Variable d nicht gibt. Lass das d einfach weg und dann funktioniert alles
 

Der Müde Joe

Top Contributor
Du arbeitets nicht auf dem Object d sondern auf diesem (this) Objekt. also this.real oder gar nix geht auch (also einfach real)
 

F34RL355

Mitglied
Erstmal danke für eure Antworten, klingt logisch ^^

Wie aber gebe ich dann dass Ergebnis(die Komplexe Zahl d) aus ?
 

Michael...

Top Contributor
Die bekommst Du ja als Ergebnis des Methodenaufrufs add() zurück
Java:
Complex a = new Complex(1, 1);
Complex b = new Complex(1, 1);
Complex x = a.add(b);
System.out.println(x);
 

Der Müde Joe

Top Contributor
>Wie aber gebe ich dann dass Ergebnis(die Komplexe Zahl d) aus ?

Wenn du genau hinschaust, wird du feststellen, dass es gar kein d gibt.

Java:
class Complex{  
  
  final int real;
  final int imag;
  
  Complex(int r, int i){
    real = r;
    imag = i;
  }  
  
  public Complex add(Complex c){     
    return new Complex(this.real+c.real , this.imag+c.imag);
  }
  
  public String toString(){
  return this.real + "" + this.imag;
  }
}
// z.B
Complex d = new Complex(1,2);
Complex added = d.add(new Complex(2,3));
System.out.println(added);
 

Landei

Top Contributor
Übrigens: real und imag final zu machen ist eine gute Idee. Ob man sie noch private macht und Getter-Methoden einfügt, ist eher eine Geschmacks- (oder Glaubens-?)sache.
 

F34RL355

Mitglied
Eine Frage hätt ich jetzt doch noch, wie ist es wenn ich mehrer Zahlen miteinander addieren will. Ich hab schon eine Lösung gefunden aber die geht irgendwie am Sinn der Sache vorbei, weil ich die Methode add nicht verwend.

Also konkretes Beispiel:

Eingabe: 1 2 + 2 3 + 3 4 + 4 5 + 5 6
Ausgabe: 15 20
 

Der Müde Joe

Top Contributor
Java:
Complex a = new Complex(1,2);
Complex result = a.add(new Complex(1,1)).add(new Complex(2,2)).add(/*....*/);
 

Der Müde Joe

Top Contributor
Java:
Complex c = new Complex(1,1);
for(/*... bli bla blub */) {
 c = c.add(new Complex(1,1));
}
 

Der Müde Joe

Top Contributor
>Aber ich kann doch c nur 1mal setzen

Nö.Ausser c wäre final. Einfach c auf die neue Referenz setzten (Welche in add durch new zurückgegeben wird). Macht die String Klasse nicht anderes bei allen Methoden (Verändert nicht den String sondern gibt einen neuen zurück)
 

Der Müde Joe

Top Contributor
>c ist doch aber final ...

Nö. Lediglich die Attribute darin. Das hindert dich aber nicht daran, ein neues Complex Objekt zu erstellen mit neuen Werten. Lediglich die Werte des erstellten Objektes sind nicht veränderbar.
 

F34RL355

Mitglied
Also müsst das so funktioniern ?
Java:
Complex c = new Complex(1,1);
while(reader.hasNextInt()){
int r = reader.NextInt();
int i = reader.NextInt();
c = c.add(new Complex(r,i));
}
 
Zuletzt bearbeitet:

Der Müde Joe

Top Contributor
>Also müsst das so funktioniern ?

Ja. Das tut es. Kannst es ja testen mit einem System.out.println nach jeden durchlauf.

EDIT:
Aber das nicht:
while(reader.hasNextInt()){
int r = reader.NextInt();
int i = reader.NextInt();

--> du prüfst auf nextInt --> ja hat einen --> liest dann aber zwei

Was auch immer der Reader sein mag? Scanner?
 
Zuletzt bearbeitet:

F34RL355

Mitglied
Also irgendas funzt ned.
Eingabe: 1 2 + 1 2
Ausgabe: 1 2
Java:
import java.util.Scanner;

class Calculator{
   
   public static void main (String [] args){
      Scanner reader = new Scanner(System.in);
      
      Complex x = new Complex(0,0);
      double	i = 0;
      double r = 0;
      String operator = "0"; // "+", "-" oder "*"      
      boolean ok = false; // Zum Überprüfen ob die Eingaben korrekt sind
      
      if(reader.hasNextDouble()){
         r = reader.nextDouble();
         if(reader.hasNextDouble()){
            i = reader.nextDouble();
            ok = true;
         }
         else{ 
            ok = false;
            System.out.println(x);
         }
      }
      else{ 
         ok = false;
         System.out.println(x);
      }
      Complex y = new Complex(r,i);
      while(reader.hasNextDouble()){
         double a = reader.nextDouble();
         double b = reader.nextDouble();
         y = y.add(new Complex(a,b));
      }                  
      
      if(ok) // Wenn Eingabe korrekt
         System.out.println(y);
      else
         System.out.println("FALSCHE EINGABE");
      
   }
}
 

Der Müde Joe

Top Contributor
Java:
import java.util.Scanner;


public class Complex {
	
	final int real;
	final int img;
	
	public Complex(int real, int img) {
		this.real = real;
		this.img = img;
	}
	
	public Complex add(Complex c) {
		return new Complex(this.real + c.real, this.img + c.img);
	}

	public String toString() {return real +" " + img;}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		Complex c = new Complex(1, 1);
		
		while(true) {
			System.out.println("real:");
			int real = scanner.nextInt();
			System.out.println("img:");
			int img = scanner.nextInt();
			c = c.add(new Complex(real, img));
			System.out.println("result = " + c);
		}
		
	}

}
 

F34RL355

Mitglied
ja klar, mit dem "+" kann ja das in der Form nicht funktionieren ^^ Vielen Dank !

Java:
y = y.add(new Complex(a,b));

Nur dass ich das jetzt auch richtig verstanden hab. Diese Zeile bewirkt nicht, dass die Werte von y geändert werden, sondern dass ein neues Objekt geschaffen wird, und y auf dieses zeigt. (Die Fachausdrücke kann ich noch nicht so ganz, wie man vll. merkt :D)
 
Zuletzt bearbeitet:

Der Müde Joe

Top Contributor
>Diese Zeile bewirkt nicht, dass die Werte von y geändert werden, sondern dass ein neues Objekt geschaffen wird, und y auf dieses zeigt.

Ja. Aber das Objekt ist nicht etwa das, was in der Schleife drin ist. sondern dasjenige, welches in der add Methode erstellt wird! In der add Methode wird ein neues Objekt Complex erstellt (new) und dieses wird zurückgegeben (eigentlich ja nur die Referenz darauf). Nun wird das neue Objekt auf die Variable y gelegt (durch "y = hier kommt new Comlex zurück" ). Das neue Complex Objekt zeigt nun auf y (y hat die Referenz auf das neue Objekt).
Um noch einen Schritt weiter zu gehen. Was passiert mit den anderen Objekten, die erstellt wurden? Niemand zeigt mehr auf diese Objekte (y hat das neue Objekt der add Methode und das vom y.add (hier) aufruf ist nach der Methode auch uninterressant). Der Garbage Collector schlägt früher oder später zu und bereinigt diese Objekte und gibt den Speicher wieder frei.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
Liroyd Methode mit Objektvariabel rechnen? Java Basics - Anfänger-Themen 6
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
Zeppi Geteilt rechnen Java Basics - Anfänger-Themen 2
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19
L Datentypen Rechnen und abrunden mit double Java Basics - Anfänger-Themen 7
S Hamster Simulator rechnen lernen Parameter int Java Basics - Anfänger-Themen 6
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
S Rechnen mit MaxValue Java Basics - Anfänger-Themen 7
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
W Seltames Problem bei Rechnen mit BigIntegers Java Basics - Anfänger-Themen 2
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
S Dezimalzahlen rechnen Java Basics - Anfänger-Themen 3
kilopack15 Rechnen mit großen Zahlen Java Basics - Anfänger-Themen 6
D Rechnen mit numerischen Datentyp Frage Java Basics - Anfänger-Themen 16
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
1 Mit Java Rechnen Java Basics - Anfänger-Themen 10
T Einstieg in "grafische Progammierung" + Rechnen in Flussdiagramm Java Basics - Anfänger-Themen 2
W Variablen float rundet beim Bruch rechnen Java Basics - Anfänger-Themen 3
N Oracle SQL mit Zwischenergebnis rechnen Java Basics - Anfänger-Themen 2
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
S Double mithilfe eines Scanners so einlesen, dass ich damit rechnen kann Java Basics - Anfänger-Themen 4
J Char-Rechnen Java Basics - Anfänger-Themen 8
A Rechnen mit Set/Get? Java Basics - Anfänger-Themen 2
Z Erste Schritte Instanzmethoden Rechnen (Bruch) Java Basics - Anfänger-Themen 18
M Mit Werten aus Arrays in anderen Methoden rechnen? Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
F Erste Schritte [GUI] Dual in Dezimal rechnen Java Basics - Anfänger-Themen 5
D Erste Schritte Rechnen mit Brüchen Java Basics - Anfänger-Themen 13
D rechnen mit Stunden und Minuten Java Basics - Anfänger-Themen 14
N mit Werten aus einer mysql datenbank in java rechnen Java Basics - Anfänger-Themen 17
G Rechnen mit Long Variablen Java Basics - Anfänger-Themen 4
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
W Variablen Rechnen mit "char" Java Basics - Anfänger-Themen 2
Joew0815 Compiler-Fehler Unexpected Type - Problem mit Variablen rechnen Java Basics - Anfänger-Themen 7
F Werte aus Tabelle vergleichen/rechnen Java Basics - Anfänger-Themen 5
C Mit Potenzen rechnen "Problem" Java Basics - Anfänger-Themen 3
M Mit Array rechnen Java Basics - Anfänger-Themen 9
T Rechnen in Arrays Java Basics - Anfänger-Themen 11
B von Ergebniss weiter rechnen Java Basics - Anfänger-Themen 3
S Rechnen mit Datum bzw. Uhrzeit Java Basics - Anfänger-Themen 3
S Datentypen Operatoren und Ausdrücke (formel richtig rechnen) Java Basics - Anfänger-Themen 8
N Mit long rechnen Java Basics - Anfänger-Themen 2
K Übungsblatt 13 Aufgabe 6 (Rechnen) Java Basics - Anfänger-Themen 12
C Mit Gleitkommazahlen rechnen Java Basics - Anfänger-Themen 20
T Rechnen mit Operatoren Java Basics - Anfänger-Themen 2
W Mit (char) rechnen Java Basics - Anfänger-Themen 3
F Mit Arrays rechnen Java Basics - Anfänger-Themen 12
H Datentypen Rechnen mit signed Byte-Array - unsinged byte Java Basics - Anfänger-Themen 3
B mit benutzereingaben rechnen Java Basics - Anfänger-Themen 4
L Bruch rechnen Java Basics - Anfänger-Themen 29
B mit Datum rechnen Java Basics - Anfänger-Themen 10
D Rechnen mit int Array Java Basics - Anfänger-Themen 9
M mit Uhrzeit rechnen Java Basics - Anfänger-Themen 11
T mit Winkel & Sinus rechnen / sin(30°)=2,5 Java Basics - Anfänger-Themen 7
A Rechnen mit big integer Java Basics - Anfänger-Themen 29
L Mit matrizen rechnen Java Basics - Anfänger-Themen 19
W Probleme mit double rechnen Java Basics - Anfänger-Themen 4
J Datentypen Rechnen mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 3
K mit einer int rechnen Java Basics - Anfänger-Themen 10
M Warum -48 rechnen? Java Basics - Anfänger-Themen 3
K Java Code rechnen Java Basics - Anfänger-Themen 7
C Datentypen Unklarheiten beim Rechnen Java Basics - Anfänger-Themen 5
W Modulo rechnen Java Basics - Anfänger-Themen 3
H Datentypen Rechnen und Runden Java Basics - Anfänger-Themen 2
S Rechnen mit Zeitangaben Java Basics - Anfänger-Themen 5
Binary.Coder Doppeltes Hashing verläuft in "Endlosscheife" beim rechnen per Hand Java Basics - Anfänger-Themen 8
F Mit Anzahl Startparametern rechnen Java Basics - Anfänger-Themen 17
T mit List<Integer> rechnen Java Basics - Anfänger-Themen 9
O einfaches rechnen mit zahlen Java Basics - Anfänger-Themen 4
K Stunden zusammen Rechnen Java Basics - Anfänger-Themen 4
T mit Typen Date rechnen Java Basics - Anfänger-Themen 6
S mit Werten aus 2D-Array rechnen Java Basics - Anfänger-Themen 32
J Anfänger-Problem: Rechnen mit Java Java Basics - Anfänger-Themen 3
J Mit Java exp Rechnen ? Java Basics - Anfänger-Themen 4
P Mit double und BigDecimal rechnen Java Basics - Anfänger-Themen 6
K Wie zerlege Ich einen String zum Rechnen? Java Basics - Anfänger-Themen 3
D Rechnen mit zwei Klassen Java Basics - Anfänger-Themen 19
J Mit Zeitzonen rechnen! Java Basics - Anfänger-Themen 3
G Float schneidet nach dem Rechnen auf eine Stelle ab Java Basics - Anfänger-Themen 9
L Eingeben Rechnen Ausgeben - Leider nicht so einfach Java Basics - Anfänger-Themen 31
G Mit tastatureingaben rechnen Java Basics - Anfänger-Themen 10
B Großer Java bug beim rechnen? Java Basics - Anfänger-Themen 66
S mit Strings rechnen Java Basics - Anfänger-Themen 16
D mit request.getParameter("x") rechnen Java Basics - Anfänger-Themen 3
T mit byte rechnen. ? Java Basics - Anfänger-Themen 8
MrTical Zahlen einlesen um damit zu rechnen Java Basics - Anfänger-Themen 5
Safado modulo rechnen Java Basics - Anfänger-Themen 5
F mit Dualzahlen rechnen Java Basics - Anfänger-Themen 5
J Rechnen mit Dualzahlen Java Basics - Anfänger-Themen 5
C Bedingtes Rechnen Java Basics - Anfänger-Themen 64
G mit Strings rechnen (Unicode) Java Basics - Anfänger-Themen 15
H Modulo rechnen Java Basics - Anfänger-Themen 17
T Rechnen Java Basics - Anfänger-Themen 3
G Taschenrechner.aber Rechnen bring ich nicht zam! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben