2012-01-27 124 views
-1

我得到一個NullPointerException這給予例外。就這樣,任何人都可以弄清楚爲什麼?爲什麼是「主」顯示java.lang.NullPointerException

class one{ 
    String name; 
} 

class oneTestDrive{ 
    public static void main(String[] args){ 
     one[] obj = new one[2]; 

     obj[0].name = "IBM"; 
     obj[1].name = "AGM"; 

     System.out.println(obj[0].name); 
     System.out.println(obj[1].name); 

    } 
} 

回答

0

您需要使用new來創建one實例。現在你的數組中不包含任何實例,但您要設置實例的name屬性。當你做

obj[0].name

obj[0]是空的,你不能在空....

試着這麼做獲取屬性...

one one1 = new one(); 
one1.name = "IBM" 
obj[0] = one1; 

BTW,類在java中的名稱應該是適當的駱駝套。...

+0

補充你的答案:http://www.oracle.com/technetwork/java/codeconv-138413.html – 2012-01-27 16:53:38

0

在這條線上

one[] obj = new one[2]; 

您創建了有兩個元素的數組,但這些元素的引用不one類型的對象。你從來沒有實際創建任何one的實例。只有當你創建這些實例

obj[0] = new one(); 

,你能不能將值分配給他們的田地,你在這裏做的:你可以像下面這樣做

obj[0].name = "IBM"; 

在你指定任何參考obj[0]它等於到null

+0

謝謝哥哥!這工作。 – 2012-01-27 17:00:12

6
one[] obj = new one[2]; 

這會爲兩個one對象創建空間,但它實際上並不創建它們!

做這樣的:

one[] obj = new one[2]; 
obj[0] = new one(); 
obj[1] = new one(); 
obj[0].name = "IBM"; 
obj[1].name = "AGM"; 

順便說一下,根據Java語言命名約定,類one應該是大寫的。

雖然我們在這,我給你的One類的構造函數:

class One{ 
    String name; 

    public One(String name){ 
     this.name = name; 
    } 
} 

現在你可以在一行中創建全陣列式:

One[] obj = new One[]{new One("IBM"),new One("AGM")}; 

(未來我會使name字段專用並添加吸氣方法等等)

+0

嗯...感謝所有這些真的有用。 – 2012-01-27 16:56:54

0
one[] obj = new one[2]; 

Ab奧雅納聲明只是創建的一個[]有大小2型,但它不包含任何一個目標

首先,你需要爲那個位置創建對象,那麼只有你可以設置名稱。

One temp = new One(); 
temp.name = "IBM"; 
     obj[0] = temp; 
0

當在Java中創建對象數組時,每個元素都初始化爲null。您必須自己初始化每個元素。 例如:

one[] obj = new one[2]; 
for(int i = 0; i < obj.length; i++) 
{ 
    obj[i] = new one(); 
} 
相關問題