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;。任何帮助将不胜感激。
答案 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);
}