2014-03-27 180 views
0

我試圖運行此獲得空指針異常。爲什麼?

package mine; 

public class MyFantasticJavaClass { 

    private static String[] myotherarray; 
    public static void main(String[] args) { 
     String[] myarray = {"ball","pen","is","large"}; 
     for(int i=0;i<myarray.length;i++){ 
      myarray[i] = myotherarray[i]; 
     } 
    } 
} 

不過,這並不不管我怎麼努力工作。

你能幫助我嗎?

誤差

Exception in thread "main" java.lang.NullPointerException 
at mine.MyFantasticJavaClass.main(MyFantasticJavaClass.java:9) 
+6

你初始化了'myotherarray'嗎? –

+0

爲了說明這一點,「myotherarray」必須是一個至少與myarray一樣多的元素的數組。相反,它只是......好吧,一點都沒有。 –

回答

2

您還沒有初始化myotherarray

你的數組必須遵循以下格式String[] myotherarray = new String[length]之前,你也可以添加任何東西了。

爲了節省您的進一步錯誤;你不能從靜態main方法讀取域myotherarray你已經嘗試過的方式,因爲靜態方法將不會運行所需要的字段的MyFantasticJavaClass一個實例myotherarray

什麼你就要做的就是添加到主要方法;

MyFantasticJavaClass name = new MyFantasticJavaClass()   

    String[] myarray = {"ball","pen","is","large"}; 

    name.myotherarray = new String[myarray.length]; 

    for(int i=0;i<myarray.length;i++){ 
     myarray[i] = name.myotherarray[i]; 
    } 

假設目的只是爲了所有元素從一個複製到其他,目前原位不動或者它字段的進入主,或其他陣列從不能聲明它主要的領域,因爲一旦數組被實例化,其長度是不可改變的。

1

您需要先初始化,然後才能讀取它。當你說myarray[i] = myotherarray[i];,還沒有被設置爲任何東西。您期望從這裏讀取什麼值?

2

尚未初始化,因此它等於null。當你試圖用null變量做任何事情時,你的JVM(Java虛擬機)不知道該怎麼做,所以它會拋出異常。所以,你應該初始化數組是這樣的:

private static String[] myotherarray = new String[5]; // change '5' to however many Strings you want your list to hold. 

您可能需要閱讀what is a null pointer exception更大的理解。

+0

+1。這是甚至試圖幫助OP的唯一答案。 –

0

試試這個

package mine; 

public class MyFantasticJavaClass { 

    private static String[] myotherarray; 
    public static void main(String[] args) { 
     String[] myarray = {"ball","pen","is","large"}; 
     myotherarray = new String[myarray.length]; //myarray.length is the size of the "other" array 
     for(int i=0;i<myarray.length;i++){ 
      myarray[i] = myotherarray[i]; 
     } 
    } 
} 
在Java等語言

你總是初始化變量。 它的這個"myotherarray = new String[...];"