如何解决有关NullPointerException的问题

时间:2014-09-22 22:24:45

标签: java nullpointerexception

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int size = 5;
    Point2D.Double[] p;
    p = new Point2D.Double[size];
    for(int i = 0; i < size; i++) {
        System.out.println("Please enter x of vertice " + (i + 1) + ":");
        p[i].x = input.nextDouble();
        System.out.println("Please enter y of vertice " + (i + 1) + ":");
        p[i].y = input.nextDouble();
    }

}

我实际上并没有弄清楚这些代码出了什么问题。 NullPointerException总是发生在&#34; p [i] .x = input.nextDouble()&#34;。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

您必须先初始化数组元素。

for(int i = 0; i < size; i++) {
    p[i] = new Point2D.Double();
    System.out.println("Please enter x of vertice " + (i + 1) + ":");
    p[i].x = input.nextDouble();
    System.out.println("Please enter y of vertice " + (i + 1) + ":");
    p[i].y = input.nextDouble();
}

答案 1 :(得分:1)

p目前是一系列null值,因为您尚未为其分配任何内容。

因此,当您致电p[0]时,您将获得null。您无法致电null.x,因为null没有.x

你应该这样做:

for(int i = 0; i < size; i++) {
    System.out.println("Please enter x of vertice " + (i + 1) + ":");
    double x = input.nextDouble();
    System.out.println("Please enter y of vertice " + (i + 1) + ":");
    double y = input.nextDouble();

    p[i] = new Point2D.Double(x, y);
}
相关问题