Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Methodenproblem (Java) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Methodenproblem (Java)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
SteveD
unregistriert
Methodenproblem (Java) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe eine Aufgabe Methoden zu schreiben, jedoch weiß ich nicht genau wie das geht... es ist so wir haben diese class datei

public class RechteckTest{

public static void main(String[] args){


Rechteck r0 = new Rechteck();
r0.x = 5;
r0.y = 4;
r0.hoehe = 6;
r0.breite = 10;

Rechteck r1 = new Rechteck();
r1.x = 10;
r1.y = 7;
r1.hoehe = 4;
r1.breite = 12;

System.out.println("r0: " + r0.info());
System.out.println("r1: " + r1.info());
System.out.println("Schnitt r0, r1: " + r0.schnitt(r1).info());
System.out.println();

Rechteck r2 = new Rechteck();
r2.x = 5;
r2.y = 4;
r2.hoehe = 6;
r2.breite = 10;

Rechteck r3 = new Rechteck();
r3.x = 10;
r3.y = 9;
r3.hoehe = 4;
r3.breite = 16;

Rechteck r4 = new Rechteck();
r4.x = 5;
r4.y = 4;
r4.hoehe = 6;
r4.breite = 10;

Rechteck r5 = new Rechteck();
r5.x = 10;
r5.y = 9;
r5.hoehe = 2;
r5.breite = 12;

RechteckSammlung sammlung = new RechteckSammlung();

sammlung.rechtecke = new Rechteck[]{r0, r1, r2, r3, r4, r5};

System.out.println("Gleiche Rechtecke:");
sammlung.gleicheRechtecke();

System.out.println();
System.out.println("Schnitt Rechtecke:");

sammlung.schnittRechtecke();

}



}

und dazu sollen wir halt die methoden
public String info ()
public boolean gleich (Rechteck recheck)
und
public Rechteck schnitt (Rechteck recheck)
machen

dazu gibts noch ne b) aber ich möchte erstmal dazu aufgeklärt werden, vll schaff ich b) dann alleine...

also meine frage ist, ich habe dies bereits geschrieben:
public class Rechteck{
public static int x,y,hoehe,breite;


public String info(){
return "Rechteck an Position (" + x + "," + y + ") mit Hoehe " + hoehe + " und Breite " + breite;
}
}

und wenn ich dann die RechteckTest.class ausführe (habe vorher das meiste auskommentiert so das erstmal nur info in RechteckTest.java ausgeführt wird) bekomme ich diese Ausgabe:

r0: Rechteck an Position (10,7) mit Hoehe 4 und Breite 12
r1: Rechteck an Position (10,7) mit Hoehe 4 und Breite 12

und ich frag mich halt wieso 2 mal dasselbe ausgegeben wird... bei r0 müsste ja eig. Pos (5,4) Höhe: 6 und Breite: 10 ausgegeben werden...
22.11.2009 15:04
SteveD
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ah okay lag an dem static ^^

schön dass man hier alles selber raus finden muss -.-

könnte mir denn jemand einen ansatz für die nächste methode geben, also

public boolean gleich (Rechteck recheck)

da muss halt überprüft werden ob beide rechtecke gleich sind und dann soll treu ausgegeben werden
22.11.2009 15:26
SteveD
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

okay das war auch einfach, aber wie überprüft man ob die sich schneiden? Oo
22.11.2009 15:58
SteveD
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

hab es jetzt mal so gelöst:

public boolean schneidet(Rechteck rechteck){
if(((rechteck.x < this.x && this.x < (rechteck.x+rechteck.breite)) && (rechteck.y > this.y && this.y > (rechteck.y-rechteck.hoehe))) || ((rechteck.x < (this.x+this.breite) && (this.x+this.breite) < (rechteck.x+rechteck.breite)) && (rechteck.y > this.y && this.y > (rechteck.y-rechteck.hoehe))) || ((rechteck.x < this.x && this.x < (rechteck.x+rechteck.breite)) && (rechteck.y > (this.y-this.hoehe) && (this.y-this.hoehe) > (rechteck.y-rechteck.hoehe))) || ((rechteck.x < (this.x+this.breite) && (this.x+this.breite) < (rechteck.x+rechteck.breite)) && (rechteck.y > (this.y-this.hoehe) && (this.y-this.hoehe) > (rechteck.y-rechteck.hoehe))))
return true;
else
return false;
}

bei mir funktionierts, wollte mal fragen ob die formel allgemeingültig ist, oder ob das jetzt nur für r0 und r1 geht... weil ich habs nur für r0 und r1 getestet, wie gesagt da kam true, weil die sich ja schneiden ^^

möchte mir jemand anregungen geben für

public Rechteck schnitt (Rechteck rechteck)

?
diese Methode soll ein Rechteck zurückgeben, das die Schnittfläche der beiden Rechteck repräsentieren soll
22.11.2009 17:10
SteveD
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

hab das jetzt erstmal so:

public Rechteck schnitt(Rechteck rechteck){
if((this.x+this.breite) < rechteck.x || this.x > (rechteck.x+rechteck.breite)){
return(null);
}
if((this.y-this.hoehe) < rechteck.y || this.y > (rechteck.y-rechteck.hoehe)){
return(null);
}

//Schnitt existiert:
if(rechteck.x >= this.x && rechteck.x <= this.breite){
x1 = rechteck.x;
x2 = ((this.x+this.breite) < (rechteck.x+rechteck.breite)) ? (this.x+this.breite) : (rechteck.x+rechteck.breite);
}
else {
x1 = this.x;
x2 = ((this.x+this.breite) < (rechteck.x+rechteck.breite)) ? (this.x+this.breite) : (rechteck.x+rechteck.breite);
}

if(rechteck.y >= this.y && rechteck.y <= this.hoehe){
y1 = rechteck.y;
y2 = ((this.y-this.hoehe) < (rechteck.y-rechteck.hoehe)) ? (this.y+this.hoehe) : (rechteck.y-rechteck.hoehe);
}
else {
y1 = this.y;
y2 = ((this.y-this.hoehe) < (rechteck.y-rechteck.hoehe)) ? (this.y+this.hoehe) : (rechteck.y-rechteck.hoehe);
}

}

wobei x1 und x2 der bereich des rechtecks auf der x-achse ist
und y1 und y2 halt auf der y-achse

also die 4 eckpunkte des rechtecks so gesehen... nur jetzt muss ich halt die höhe davon ableiten und die breite...

und das ganze muss ich doch auch noch irgendwie in ein neues rechteck mit
Rechteck r6 = new Rechteck() oder so packen, oder?
22.11.2009 19:51
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

1. Probier mal das Code-Tag zu benutzen, damit die Einrückungen nicht verloren gehen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public Rechteck schnitt(Rechteck rechteck){
   if((this.x+this.breite) < rechteck.x || this.x >  (rechteck.x+rechteck.breite)) {
      return(null);
   }
   if((this.y-this.hoehe) < rechteck.y || this.y > (rechteck.y-rechteck.hoehe)){
      return(null);
   }


2. Was war jetzt die Frage?
23.11.2009 04:00 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SteveD
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

1. danke für den tipp, hat mich auch schon gestört dass es nicht eingerückt wird

2. schon okay.... programm erfolgreich geschrieben.... keine fragen mehr....
23.11.2009 19:43
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Methodenproblem (Java)