我在日食中得到了一个应用,它计算了矩形,高度,宽度来自点(p1,p2,p3,...,p10)。
我的点数打印如下:
Point@659e0bfd, Point@2a139a55, Point@15db9742, Point@6d06d69c, Point@7852e922, Point@4e25154f, Point@70dea4e, Point@5c647e05, Point@33909752, Point@55f96302
你能告诉我它应该怎么样?我不明白这些toString方法。其余的代码看起来不错吗?
import java.util.ArrayList;
import java.util.List;
public class App { //new public class App
public static void main(String[] args) {
Point p1 = new Point(10.681,-48.857); // new Points (x,y)
Point p2 = new Point(96.980,20.724);
Point p3 = new Point(66.647,-66.558);
Point p4 = new Point(-2.674,-58.571);
Point p5 = new Point(40.11,-12.342);
Point p6 = new Point(27.782,46.809);
Point p7 = new Point(54.759,-46.709);
Point p8 = new Point(-33.89,-90.787);
Point p9 = new Point(15.84,-67.553);
Point p10 = new Point(19.481,51.331);
List<Point> list1 = new ArrayList<Point>(); // Create ArrayList and add Points
list1.add(p1);
list1.add(p2);
list1.add(p3);
list1.add(p4);
list1.add(p5);
list1.add(p6);
list1.add(p7);
list1.add(p8);
list1.add(p9);
list1.add(p10);
public String toString() {
return Point;
}
new BoundingBox(list1);
double c = BoundingBox.height();
double d = BoundingBox.width();
System.out.println("Das Array beinhaltet die Punkte" + list1 ); // This prints: "Das Array beinhaltet die Punkte" and the list
System.out.println("Die BoundingBox hat die Hohe " + c + " und die Breite " + d + "\n" ); // This prints the height and the width
System.out.println("Der maximale Punkt der BBox betragt (" + BoundingBox.getMaxPoint() +")." ); // This prints:
System.out.println("Der minimale Punkt der BBox betragt (" + BoundingBox.getMinPoint() +")." ); // This prints:
}
}
的BoundingBox
import java.util.List;
public class BoundingBox { //new class BoundingBox
private static Point minPoint; //new
private static Point maxPoint;
public BoundingBox(List<Point> manyPoints) {
double minX = manyPoints.get(0).getX();
double maxX = manyPoints.get(0).getX();
double minY = manyPoints.get(0).getY();
double maxY = manyPoints.get(0).getY();
for (int i = 0; i < manyPoints.size(); i++) {
Point test = manyPoints.get(i);
test.getX();
if (test.getX() < minX) {
minX = test.getX();
}
if (test.getX() > maxX) {
maxX = test.getX();
}
if (test.getY() < minY) {
minY = test.getY();
}
if (test.getY() > maxY) {
maxY = test.getY();
}
minPoint = new Point(minX, minY);
maxPoint = new Point(maxX, maxY);
}
}
public static double width() {
double a = (maxPoint.getX() - minPoint.getX()); // calculate the width
return a;
}
public static double height() {
double b = (maxPoint.getY() - minPoint.getY()); // calculate the width
return b;
}
public static Point getMaxPoint() {
return maxPoint;
}
public static Point getMinPoint() {
return minPoint;
}
}
点
public class Point {
private double x;
private double y;
public Point(double xnew, double ynew) {
x = xnew;
y = ynew;
}
public double getX() {
return x;
}
public void setX(double xnew) {
x = xnew;
}
public double getY() {
return y;
}
public void setY(double ynew) {
y = ynew;
}
}
答案 0 :(得分:12)
您应该在Point类中覆盖toString
。
public class Point {
...
@Override
public String toString ()
{
return x + "," + y; // or whatever you wish to display
}
...
}
哦,你不清楚你在App
班上打算做什么:
public String toString() {
return Point;
}
这甚至不应该通过编译。除非您尝试打印App
个实例,否则不必覆盖toString
的{{1}}。
答案 1 :(得分:3)
As per documentation,如果您未指定override
方法的toString
,则会调用父级(在本例中为Object
)方法,这导致:
getClass().getName() + '@' + Integer.toHexString(hashCode())
答案 2 :(得分:2)
将Point
课程添加到以下方法
public String toString() {
return "Point[" + x + ", " + y + "]";
}