2014-09-22 86 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()」。任何幫助將不勝感激。如何解決這個關於空指針異常的問題

+2

我敢打賭,P [i]爲null,因爲p在未初始化。僅僅因爲你說p有尺寸元素,並不意味着它的所有位置都填充了Point2D.Double類型的初始化對象 – Leo 2014-09-22 22:35:39

回答

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