2014-01-11 35 views
0

爲什麼此代碼不起作用?看來我不能使用數組將該變量設置爲'10',但是它具有正常的對象。使用Java中的數組對象調用其他類的方法

我在做什麼錯?

講座1

public class apples { 
    public static void main(String[] args) { 
     carrots carrotObj = new carrots();  
     carrotObj.setVar(5);   
     System.out.println(carrotObj.getVar()); 

     carrots carrotArray[] = new carrots[3]; 
     carrotArray[1].setVar(10);   
     System.out.println(carrotArray[1].getVar()); 
    } 
} 

講座2

public class carrots { 
    private int var = 0; 
    public int getVar() { 
     return var; 
    } 

    public void setVar(int var) { 
     this.var = var; 
    } 
} 

控制檯輸出:

5 
Exception in thread "main" 
java.lang.NullPointerException 
    at apples.main(apples.java:17) 
+1

您需要自己填充對象。你在這裏得到一個NPE:'carrotArray [1]'另外,使用首字母大寫的類,例如蘋果和胡蘿蔔 – keyser

+0

'carrotArray [1] =新的胡蘿蔔();''carrotArray [1] .setVar(10) '。 –

+0

感謝你們的回覆! – user3183947

回答

1

你創建了一個陣列,但是在創建對象的數組時,它們是全部初始化爲null - 對象引用變量的默認值。您需要創建一些對象並將它們分配給陣列中的插槽。

carrots carrotArray[] = new carrots[3]; 

// Place this code 
carrotArray[1] = new carrots(); 

carrotArray[1].setVar(10); 

你可以做0位和2

另外類似的東西,Java的約定是大寫的類名,例如Carrots

+0

感謝您的幫助! – user3183947

0

您需要初始化數組的所有元素;因爲它們不是primitive data types它們的默認值是null

carrots carrotArray[] = new carrots[3]; 
for(int i=0; i < carrotArray.length; i++){ 
    carrotArray[i] = new carrots(); 
} 
carrotArray[1].setVar(10); 

System.out.println(carrotArray[1].getVar()); 
+1

感謝您的幫助! – user3183947

相關問題