2014-04-15 86 views
-1

我在主要方法 中寫了這個語句異常將在(GuaranteeYears)中,所以我把它放在try塊中。catch添加異常

首先在main我做出Store對象和參數傳遞號4,在Store I類將有一個陣列稱爲arrProduct,將具有長度爲4:

boolean flag1 = true; 
while (flag1) { 
    try { 
     System.out.println("Ente GuaranteeYears"); 
     int GuaranteeYears=read.nextInt(); 

     StrongDevice s = new StrongDevice(code,type,price,Model,Capacity,GuaranteeYears); //the object 

     flag1 = false; 
     x.addProduct(s); 
    } 

,這是我的外接方法

public boolean addProduct(Product p) { 
    if(arrProduct.length==NumOfProduct) 
     return false; 

    arrProduct[NumOfProduct]=p; 
    NumOfProduct++; 
    return true; 
} 

我的問題是:當我做對象,並將其添加到陣列它給了我NullPointerException - 爲什麼會發生?

+0

@SotiriosDelimanolis我真的知道什麼是空指針異常,但我不知道它爲什麼發生在這裏? – BSMN

+0

NPE沒有一百萬個原因發生。閱讀答案。你會發現它爲什麼會發生,你可以將它應用到你的場景中。 –

回答

0

據我理解,這導致NPE線是

x.addProduct(s); 

最有可能的,這是通過陣列arrProduct當正在訪問哪個沒有被初始化,並導致NPE引起的。

要解決該問題,請確認arrProduct始終在Store對象創建時始終正確初始化。

+0

@BSMN你可以請發佈整個'商店'類嗎? –

+0

是的,謝謝你,我把數組初始化爲public,然後我在構造函數中再次初始化它! ,現在開展工作,感謝您的幫助 – BSMN

+0

@BSMN不客氣,我很樂意提供幫助。不要忘記上傳正確的答案,並選擇一個正確的答案。 –