überprüfen, ob ein Punkt in einem angegebenen Rechteck
ok, also mache ich eine Zuweisung für eine Java-Klasse und einem Teil der Aufgabe ist es, herauszufinden, ob ein Punkt innerhalb der Abmessungen eines Rechtecks haben. also ich habe diesen code:
public boolean contains(Point p){
return (this.getLocation().getX() < p.getX() && this.getLocation().getY() < p.getY() &&
this.getLocation().getX() + this.getWidth() > p.getX() &&
this.getLocation().getY() + this.getHeight() > p.getY());
}
Ich erstellt eine point-Klasse, die ist, warum ich fragte, für eine "Point p" - parameter. Um dies zu testen boolean habe ich eine einfache 'if' - Anweisung in meiner Main-Klasse:
//check if one rectangle's point is inside another
if (rectangle.contains(rectangle2.getLocation()))
System.out.println("the point is in the rectangle");
Den Speicherort der Punkt ist (6,7). Der Punkt, Breite und Höhe des Rechtecks 1 ist (4,5), 9 und 3, beziehungsweise. Ich weiß, für eine Tatsache, dass dieser Punkt innerhalb des ersten Rechtecks, aber die println-Anweisung wird nicht angezeigt, d.h. es muss ein problem mit der booleschen ich erstellt, aber ich sehe nicht ein Fehler, vielleicht mein Kopf ist bewölkt, aber kann jemand darauf hin, zu mir, was ist hier falsch?
P. S. das ist alles Konsole arbeiten, ich bin nicht der Umgang mit einigen GUI oder Grafik-Programmierung.
Ich glaube nicht, dass es verwandt ist. Ich denke, das ist eine debugging-Aufgabe für unsere guten Schüler.
Können Sie Ihre Methode getLocation?
InformationsquelleAutor mastrgamr | 2011-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es ok aus für mich. Ich würde schauen, dass Ihr test-case hat eigentlich die zahlen, die Sie denken, es tut, ich würde auch schauen, dass Ihr Accessoren sind alle Rückkehr der richtigen Werte (ich kann Ihnen nicht sagen, die Anzahl der Male, die ich habe, umgesetzt getX () {return this.y;}). Andere als das, es ist Reine Vermutung.
vielen Dank, es war ein Teil in meinem code, wo ich Durcheinander die Werte für Höhe und Breite von einem Punkt, anstelle von x für die Breite, und y für die Höhe, ich hatte y und Breite x Höhe.
das ist der Grund, für folgenden eine der wichtigsten Regeln - sollten Sie den Namen Ihrer Felder und Methoden mit dem Namen zeige thier-Nutzung, so dass, plz, versuchen
int width
im Ortint x
InformationsquelleAutor Paul Z
AWT-Rechtecks hat bereits
contains
Methode. ( link )Aufgabe scheint, wenn Sie verstehen, wie die Benennung der Räume-Konflikt. Zum Beispiel, wenn Sie faul sind (es ist eine der am meisten bewunderten Eigenschaften der programmer), dann kann man schreiben:
In der Regel nicht wollen, um reimplementing Funktionen noch erweitern Klassen.
Dies gilt nicht in den meisten Fällen, weil es keine Unterstützung für floating-point-Werte.
InformationsquelleAutor Margus
In der Regel im Umgang mit computer-Grafik, die oben Links Punkt ist (0,0) und die Rechte untere Ecke ist (Breite, Höhe).
Dies bedeutet, dass Sie sollten umkehren, Ihre Bedingungen
Unabhängig von der Ausrichtung der Rahmenbedingungen bleiben die gleichen.
InformationsquelleAutor Eric
Obwohl seine naive Methode, ich habe versucht, das folgende Konzept:
Wenn der Punkt (px,py) innerhalb des gegeben Rechtecks, die Summe der Flächen der Dreiecke gebildet durch den Beitritt 2 Rechteck Punkte und den gegebenen Punkt (sagen wir in gegen den Uhrzeigersinn oder im Uhrzeigersinn) wäre gleich der Summe des Rechtecks.
Habe ich ein Bild für die gleichen, aber aufgrund der niedrigen Ruf (wie ich bin ein Neuling), nicht per post.
Als ich zu formulieren, diese in eine aktuelle Java-code, ich hatte eine situation zu handhaben ist, wo
Bereich Wert mit dezimal-Teil mit 15 9s wurde, gerundet auf das nächste ganze Zahl.
Finden Sie diesen code:
public class pointInsideRect {
InformationsquelleAutor Devesh