Methodenproblem (Java) |
22.11.2009, 15:04 | Auf diesen Beitrag antworten » | |||||
SteveD | Methodenproblem (Java) 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:26 | Auf diesen Beitrag antworten » | |||||
SteveD | 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:58 | Auf diesen Beitrag antworten » | |||||
SteveD | okay das war auch einfach, aber wie überprüft man ob die sich schneiden? Oo |
|||||
22.11.2009, 17:10 | Auf diesen Beitrag antworten » | |||||
SteveD | 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 |
|||||
Anzeige | ||||||
|
||||||
22.11.2009, 19:51 | Auf diesen Beitrag antworten » | |||||
SteveD | 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? |
|||||
23.11.2009, 04:00 | Auf diesen Beitrag antworten » | |||||
ed209 | 1. Probier mal das Code-Tag zu benutzen, damit die Einrückungen nicht verloren gehen.
2. Was war jetzt die Frage? |
|||||
23.11.2009, 19:43 | Auf diesen Beitrag antworten » | |||||
SteveD | 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.... |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
|
Die Neuesten » |
|