2014-09-22 3 views
-1
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은 항상 "p [i] .x = input.nextDouble()"에서 발생합니다. 어떤 도움을 주시면 감사하겠습니다.NullPointerException에 대한이 질문을 해결하는 방법

+2

내가 P [i]는 페이지가 초기화되지 않았기 때문에 널을 내기. p에 크기 요소가 있다고 말했기 때문에 모든 위치가 Point2D 유형의 초기화 된 객체로 채워져 있음을 의미하지는 않습니다. Double – Leo

답변

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

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); 
} 
관련 문제