Java toString不起作用

时间:2015-05-08 08:23:00

标签: java eclipse

我在日食中得到了一个应用,它计算了矩形,高度,宽度来自点(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;
}




}

3 个答案:

答案 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 + "]";
}