Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen?

Diskutiere Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? im Allgemeine Java-Themen Bereich.
M

ml528

Hallo Leute,
ich versuche seit 3Stunden den Abstand von 2 Punkten mithilfe von Setter- und Getter-Methoden(für x und y Punkte) und der Formel zur Berechnung des Abtandes, die in Methode m() ist zu berechnen. Leider bekomme ich als Ergebnis immer eine 0.0, wenn ich die Methode m() ausführen möchte. Ich glaube es liegt daran, dass die Methode m() nicht die Werte beider Objekte berücksichtigt. Das liegt vermutlich daran, dass Methode nur Lokale Variablen und nicht Objektvariable berücksichtigt. Wisst ihr wie ich die Werte beider Objekte krs und krs1, also deren x1,x2,y1,y2 in die Methode eingeben kann und anschließend mit System.out.println() auf die Konsole ausgeben kann?


Code:
public class kreis {

double mittelpunktx1;
double mittelpunkty1;
double mittelpunktx2;
double mittelpunkty2;
double Abstand= Math.sqrt(Math.pow(getmittelpunktx2()-getmittelpunktx1(),2)+Math.pow(getmittelpunkty2()-getmittelpunkty1(),2));

public double getabstand() {
   return Abstand;
}

public void setmittelpunkty1(double mittelpunkty1 ) {
this.mittelpunkty1=mittelpunkty1;  
}
public double getmittelpunkty1() {
   return mittelpunkty1;
}
public void setmittelpunktx1(double mittelpunktx1 ) {
this.mittelpunktx1=mittelpunktx1;  
}
public double getmittelpunktx1() {
   return mittelpunktx1;
}

public void setmittelpunkty2(double mittelpunkty2 ) {
this.mittelpunkty2=mittelpunkty2;  
}
public double getmittelpunkty2() {
   return mittelpunkty2;
}
public void setmittelpunktx2(double mittelpunktx2 ) {
this.mittelpunktx2=mittelpunktx2;  
}
public double getmittelpunktx2() {
   return mittelpunktx2;
}
public void m() {
  
Abstand= Math.sqrt(Math.pow(mittelpunktx2-mittelpunktx1,2)+Math.pow(mittelpunkty2-mittelpunkty1,2));  
  
}

public static void main(String[] args) { //Wie kann ich
kreis krs=new kreis();
kreis krs2=new kreis();
krs.setmittelpunktx1(5.00);
krs.setmittelpunkty1(3.00);
krs2.setmittelpunktx2(7.00);
krs2.setmittelpunkty2(8.00);


System.out.println(Abstand);

}
}
 
J

Javinner

Sehe ich eine Windrose und gehe davon aus, dass der Punkt, von welchen aus die Berechnung statt finden soll, die Koordinaten mit der Windrose (0,0) eigenen teilt, so wird mir klar, dass es insgesamt neun Fälle für den Fall wichtig sind. Den Neunten verrate ich dir, auf den Rest musst du selbst kommen:
Wenn der Hauptpunkt und der Gesuchte die Selben Koordinaten teilen, dann kann es keinen Abstand ob gleich der Himmelsrichtung geben. Nun hast du nur noch acht ;)

Trigonometrische Funktion
 
Zuletzt bearbeitet:
M

ml528

Ich habe doch schon die Formel zur Berechnung, mein Problem liegt in dem, was ich oben erwähnt habe.
 
J

Javinner

Dein Code gibt vor, dass jede Instanz der Klasse kreis, was im Übrigen nach Java-Konvention Kreis hätte heißen sollen, die Attribute Abstand, welche nach den besagten Konventionen hätte abstand heißen sollen, besitzt. Schau dir an, du rufst mit der Methode println(Abstand) etwas auf, was mit keiner Instanz zu tun hat.
Java:
public class Distance
{

    public static void main(String[] args)
    {
        Point a = new Point(2, 5);
        Point b = new Point(4, 7);

        System.out.println(a.distance(b));
    }

}

/** Output */

2.8284271247461903
Schau dir in deiner IDE die Klasse Point genau an ;)
 
M

ml528

ich habe jetzt den Code so geändert:
krs.m(); // Erst wird die Methode ausgeführt und anschließend das Ergebnis angezeigt
System.out.println(krs.Abstand);

jetzt bekomme ich aber nur das Ergebnis ohne die Punkte von krs2, weil ich nicht weiß ich beide Kreise in die Methode m() implementieren soll
 
mrBrown

mrBrown

Warum hat dein Kreis zwei Mittelpunkte? Üblicherweise haben Kreise genau einen...

Dann sollte die Methode m (die einen besseren Namen verdient hat) beide Kreise kennen, aktuell kennt sie nur einen. Am einfachsten, indem du sie auf einem Kreis aufrufst und einen anderen Kreis übergibst, zu dem der Abstand berechnet werden soll. Außerdem sollte sie dann den Abstand zurückgeben, und nicht in einer Instanzvariable speichern.
Die Signatur ist dann etwa public double abstand(Kreis andererKreis), füllen musst du die dann noch selber ;)
 
M

ml528

nein ich habe 2 verschiedene kreise und deren mittelpunkte. ich muss lediglich deren Abstände berechnen :/
 
mrBrown

mrBrown

nein ich habe 2 verschiedene kreise und deren mittelpunkte. ich muss lediglich deren Abstände berechnen :/
Aktuell hast du zwei Kreise, die jeweils zwei Mittelpunkte haben.

Das sind in deinem Beispiel krs mit (5,3) und (0,0) als Mittelpunkte sowie krs2 mit (0,0) und (7,8) als Mittelpunkte
 
M

ml528

nein ich habe 2 Mittelpunkte mit x1 und y1 und y2 und x2 und möchte beide mit Hilfe meiner Methode m() den Abstand berechnen.
 
M

ml528

ahhh... ja ihr habt Recht. Aber wenn ich jetzt x2 und y2 als Instanzen lösche, wie soll die Methode m(), die den Abstand von den Punkten berechnet, die Variablen von den beiden Objekten,die ja dann gleich heißen unterscheiden?
 
H

httpdigest

Jede Instanz einer Klasse besitzt ihre eigenen Werte für die Instanzvariablen der Klasse. Deswegen heißen sie auch Instanzvariablen.
Ein Beispiel:
Java:
class A {
  int b;
}

A a1 = new A();
a1.b = 3;
A a2 = new A();
a2.b = 4;
Hier haben wir zwei Instanzen von A, die wir in den Variablen a1 und a2 speichern. Jede Instanz besitzt ihre eigenen Werte für die Instanzvariable `b`. Zugreifen kannst du auf die individuellen Werte jeder einzelnen Instanz via `a1.b` und `a2.b`.
 
M

ml528

ja stimmt! Danke dir! Wie kann ich aber einer Methode sagen, dass sie Instanzen von 2 verschiedenen Objekten aufnehmen soll?
 
H

httpdigest

Java:
public void methode(A a1, A a2) {
  int bVonA1 = a1.b; // oder halt mit Getter, wenn existiert: a1.getB()
  int bVonA2 = a2.b;
  // mach was damit...
}
 
M

ml528

Danke Danke Danke!!! Habs endlich geschafft sehr nett von dir und den anderen :)
 
stg

stg

Und jetzt noch fachlich:
Dass man den Abstand zwischen zwei Kreisen vielleicht nicht unbedingt mit dem Abstand ihrer Mittelpunkte gleichsetzen sollte, hinterfragst du hoffentlich nicht erst dann, wenn du mal einen Ball ins Gesicht kriegst...
 
Thema: 

Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben