2013-12-12 63 views
1

雖然這段代碼運行在線程獲取異常「主」顯示java.lang.NullPointerException

public class Main 
{ 
public int a; 
public int b; 
public static void main(String []args) 
{ 
    Main []ary=new Main[26]; 
    int i; 
    for(i=0;i<26;i++) 
    { 
     ary[i].a=0; 
     ary[i].b=i; 
    } 
} 
} 

我收到以下錯誤..

Exception in thread "main" java.lang.NullPointerException 
at Main.main(Main.java:11) 

我創建的對象的數組相同類,並試圖使用它的實例變量

雖然我搜索了它,我無法找到這個錯誤..

回答

4
Main []ary=new Main[26]; 

您聲明array未賦值。

所以在內存中,數組類似Main []ary={null,null ...., null};

NullPointerException

當應用程序試圖在需要對象的地方使用null時,拋出該異常。這些包括:

  • 調用空對象的實例方法。
  • 訪問或修改空對象的字段。
  • 將null的長度當作數組。
  • 訪問或修改null的插槽,就像它是一個數組一樣。
  • 將null拋出,就像它是Throwable值一樣。

這就像null.a這導致NullPointerException

for(i=0;i<26;i++) 
    { 
     Main m = new Main(); 
     m.a =0; 
     m.b =i; 
     ary[i]= m; 

    } 
2
Main []ary=new Main[26]; 
    int i; 
    for(i=0;i<26;i++) 
    { 
     ary[i]=new Main(); 
     ary[i].a=0; 
     ary[i].b=i; 
    } 

這將工作:)

1

您需要,才能進行訪問,以創建一個實例爲每個陣列的條目:

for(i=0;i<26;i++) 
{ 
    ary[i] = new Main(); // Otherwise ary[i] is null and will cause an exception on the following line 
    ary[i].a=0; 
    ary[i].b=i; 
} 
0

您剛剛創建的數組可以保存Main的實例,但是您沒有初始化內容,所以數組中的所有元素都是null。在分配值之前先做ary[i]= new Main()

1

進制[i]是空

public class Main 
{ 
    public int a; 

    public int b; 

    public static void main(String[] args) 
    { 
     Main[] ary = new Main[26]; 
     int i; 
     for (i = 0; i < 26; i++) 
     { 
      ary[i]=new Main();//<---(here ary[i] was null) 
      ary[i].a = 0; 
      ary[i].b = i; 
     } 
    } 
} 
相關問題