Java BoundingBox程序

时间:2015-05-07 22:57:03

标签: java eclipse

我是Java初学者的初学者。我会做一个应用来计算最大点,最小点,宽度和高度。我在日食中写道。

  1. 我成了这个错误:

    线程中的异常" main"显示java.lang.NullPointerException     在BoundingBox.height(BoundingBox.java:50)     在App.main(App.java:39)`

  2. 我的打印点看起来像

    点@ 659e0bfd 点@ 2a139a55 点@ 15db9742

  3. 在此代码中,toString方法应该如何?

    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;
        }
    }
    

    的BoundingBox

    import java.util.List;
    
    public class BoundingBox {
    
        private static Point minPoint;
        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());
            return a;
        }
    
        public static double height() {
            System.out.println("minPoint = " + minPoint);
            System.out.println("maxPoint = " + maxPoint);
            double b = (maxPoint.getY() - minPoint.getY());
            return b;
        }
    
        public Point getMaxPoint() {
            return maxPoint;
        }
    
        public Point getMinPoint() {
            return minPoint;
        }
    }
    

    应用

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class App {
        public static void main(String[] args) {
            Point p1 = new Point(10.681,-48.857);
            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);
    
            Iterator<Point> itr = list1.iterator( );
            while ( itr.hasNext( ) ) {
                System.out.println( itr.next( ) );
            }
    
            double c = BoundingBox.height();
            double d = BoundingBox.width();
    
            System.out.println(" The Points: " + list1 );
            System.out.println(" BoundingBox have " + c + "height and" + d + "width." );
            System.out.println(" The max Point is " );
            System.out.println(" The min Point is " );
        }
    }
    

2 个答案:

答案 0 :(得分:0)

在尝试调用height()和width()函数之前,您从未创建过BoundingBox类的实例,因此您在行上接收空指针异常

double a = (maxPoint.getX() - minPoint.getX());

当它试图调用maxPoint.getX()和minPoint.getX()时,因为变量中没有存储值

答案 1 :(得分:0)

您的变量:

private static Point minPoint;
private static Point maxPoint;

BoundingBox构造函数中初始化,但在您的App中,您不会调用它,因此它们是null。只需执行以下操作:

new BoundingBox(list1);
double c = BoundingBox.height();
double d = BoundingBox.width();

NullPointerException将消失。