2015-02-10 101 views
-1

我剛開始java編程。我在數組列表得到了一個空指針異常問題 我的代碼如下java中的空指針異常ArrayList

ArrayList<Arpaymentitem> arpaymentitemsList= jb.getArpaymentitems(); 
arpaymentitemsList.removeAll(Collections.singleton(null)); 

      try { 
       for(Arpaymentitem arpaymentitem:arpaymentitemsList) 
       { 

        if (arpaymentitem.getInvoicekey()!=null) { 
         statement2.setString(1,arpaymentitem.getInvoicekey()); 
        } 
        if(arpaymentitem.getInvoicekey() != null) 
         { 
         statement2.setString(2,arpaymentitem.getAmount()); 
         } 
         } 
        statement2.addBatch(); 
       } 
      catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

我在FOR語句獲得空指針異常錯誤。我確信列表中有一些空值。要忽略空值我已經介紹了一步

ArrayList<Arpaymentitem> arpaymentitemsList= jb.getArpaymentitems(); 
arpaymentitemsList.removeAll(Collections.singleton(null)); --> remove nulls 

我得到的NPE是 顯示java.lang.NullPointerException 在payment.Intacct_Payment.main(Intacct_Payment.java:169)和行是爲 (Arpaymentitem arpaymentitem:arpaymentitemsList)

問題仍然存在。我在這裏做錯了什麼。

+0

你確定這一點:arpaymentitemsList不爲空? – Stultuske 2015-02-10 12:07:24

+0

我已經介紹了這個arpaymentitemsList.removeAll(Collections.singleton(null));刪除空值。這是不對的? – Karthi 2015-02-10 12:08:25

+0

如果列表本身沒有實例化,那麼你不需要在不同的位置放置一個NPE。 – Stultuske 2015-02-10 12:09:24

回答

1

你可以試試這個follwing步驟,並給予反饋

ArrayList<Arpaymentitem> arpaymentitemsList = new ArrayList<>(); 
if (jb.getArpaymentitems().size()> 0) 
{ 
     for (Arpaymentitem arpaymentitem : jb.getArpaymentitems()) 
     { 
       System.out.println("Description: ..."); 
       arpaymentitemsList.add(arpaymentitem) 
     } 
} 
//The Rest of the code 
+0

我得到NPE在if(jb.getArpaymentitems()。size()> 0) – Karthi 2015-02-10 12:35:11

+0

這意味着問題出在輸入jb.getArpaymentitems()中。你可以使用for-each條件打印jb.getArpaymentitems()的值,還是檢查null? – 2015-02-10 14:26:38

+0

是的。我使用foreach循環打印數據。獲得180條記錄後,我得到空值異常。我如何跳過檢查空值。或者如果達到空值,我可以停止循環? – Karthi 2015-02-10 15:49:05