Was ich hier habe, ist das Grundgerüst des Projekts in Java. Dies basiert auf der Erstellung von Datentypen, und ich werde im Grunde genommen den Bereich und den Umfang ermitteln lassen, um festzustellen, ob sie sich schneiden oder enthalten. Ich verstehe die Formeln, die ich verwenden muss, aber wie würde ich das Rechteck b tatsächlich so erstellen, dass ich genau wie das ursprüngliche Rechteck ein x-, y-Zentrum sowie eine Breite und Höhe haben muss? Ich hatte auf ähnliche Weise versucht, das Rechteck b zu deklarieren, aber es weigert sich, eine der Variablen zuzuweisen.
Um herauszufinden, ob sich das Rechteck b mit dem anderen Rechteck schneidet, muss ich es definieren, um Berechnungen für die Ecken des Rechtecks usw. durchzuführen. Hier ist mein Code:
public class OwnRectangles {
private final double x,y; //center of rectangle
private final double width; //width of rectangle
private final double height; //height of rectangle
public Rectangle(double x0, double y0, double w, double h)
{
x=x0;
y=y0;
width=w;
height=h;
}
public double area()
{
return width*height;
}
public double perimeter()
{
return height*2 + width*2;
}
public boolean intersects(Rectangle b)
{
}
public boolean contains(Rectangle b)
{
}
public void draw(Rectangle b)
{
/*Draw rectangle on standard drawing*/
}
}
Ich versuche im Wesentlichen, ein anderes Rechteck zu erstellen. Ich habe so etwas versucht, das nicht funktionieren würde:
public OwnRectanglesb(double x2, double y2, double w2, double h2)
{
x=x2;
y=y2;
width=w2;
height=h2;
}
Dieser Name stimmt nicht nur nicht mit den OwnRectangles b überein, sondern die Öffentlichkeit ... soll nur OwnRectangles sein, wenn dies sinnvoll ist. Ganz einfach möchte ich ein zweites zu verwendendes Rechteck definieren.
4 Antworten
Ich habe die Antwort herausgefunden. Dazu erstelle ich einfach verschiedene Instanzen der Klasse und setze sie direkt unter:
public OwnRectangles(double x0, double y0, double w, double h)
{
x=x0;
y=y0;
width=w;
height=h;
Rectangle a = new OwnRectangles(//put arguments here);
Rectangle b = new OwnRectangles(//put arguments here);
}
Wie zu sehen ist, habe ich zwei verschiedene Rechtecke basierend auf dem Klassenrechteck erstellt, und natürlich würde ich in der Klammer die Argumente einfügen, mit denen der Benutzer die Breite, Höhe usw. der Rechtecke auf einen beliebigen Wert einstellen kann.
Die Klasse OwnRectangle
muss mit der Verwendung von Rectangle
in Ihrem Code übereinstimmen. Ändern Sie beispielsweise Folgendes in:
public class Rectangle /* CHANGED FROM OwnRectangle to Rectangle */ {
private final double x,y; //center of rectangle
private final double width; //width of rectangle
private final double height; //height of rectangle
public Rectangle(double x0, double y0, double w, double h)
{
x=x0;
y=y0;
width=w;
height=h;
}
public double area()
{
return width*height;
}
public double perimeter()
{
return height*2 + width*2;
}
public boolean intersects(Rectangle b)
{
}
public boolean contains(Rectangle b)
{
}
public void draw(Rectangle b)
{
/*Draw rectangle on standard drawing*/
}
}
Um die Rechteckobjekte zu erstellen und festzustellen, ob sie sich überschneiden, sieht Ihr Code folgendermaßen aus:
Rectangle firstRectangle = new Rectangle(1, 2, 3, 4);
Rectangle secondRectangle = new Rectangle(5, 6, 7, 8);
boolean intersects = firstRectangle.intersects(secondRectangle);
Wenn die Werte 1, 2, 3, 4, 5, 6, 7, 8
nur beliebige Werte sind, würden Sie sie durch die wahren Werte ersetzen. Dann würden Sie in Ihrer intersects
-Methode einfach x, y, Breite und Höhe mit b.x, b.y, b.width und b.height vergleichen. Schließlich sollten alle Verweise auf das Rechteck-Objekt dasselbe Rectangle
heißen und nicht Rectangle
und OwnRectangle
vertauschen.
Ihr Klassenname ist OwnRectangles
, aber was als Konstruktor erscheint, heißt Rectangle
. Der Konstruktorname muss mit dem Klassennamen übereinstimmen, andernfalls handelt es sich nur um eine Methode. Sie können es korrigieren, indem Sie schreiben:
public class OwnRectangles {
private final double x,y; //center of rectangle
private final double width; //width of rectangle
private final double height; //height of rectangle
public OwnRectangles(double x0, double y0, double w, double h) {
...
Neue Fragen
java
Java ist eine Programmiersprache auf hoher Ebene. Verwenden Sie dieses Tag, wenn Sie Probleme haben, die Sprache selbst zu verwenden oder zu verstehen. Dieses Tag wird selten alleine verwendet und wird am häufigsten in Verbindung mit [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] und [maven] verwendet.