2014-10-30 73 views
-1

,所以我玩弄一些代碼,當我運行它,我得到這個錯誤,空指針異常與ArrayList的

Exception in thread "main" java.lang.NullPointerException 
    at VRSolution.findSavings(VRSolution.java:35) 
    at VRTests.main(VRTests.java:22) 

這是我的代碼

public void testAlgo() { 
    this.soln = new ArrayList<List<Customer>>(); 
    int max = this.prob.depot.c; 
    int current = 0; 
    ArrayList<Customer> route = null; 
    for(Customer c:prob.customers){ 
     if(current <= max){ 
      route.add(c); 
      current += c.c; 
     } 
     else { 
      route = new ArrayList<Customer>(); 
      soln.add(route); 
     } 
    } 
} 

如果有人可以幫助我明白爲什麼我得到這將是非常感謝謝謝

+0

什麼'prob'?你能粘貼相關的代碼嗎? – asgs 2014-10-30 19:27:29

+4

您正在對初始化爲null的'route'變量調用'add'方法。 – 2014-10-30 19:27:47

回答

0

route.add(c);行可以在數組列表初始化之前調用。 可能這是你的問題。因此,在添加項目之前初始化路線。

0

你有這樣的:

ArrayList<Customer> route = null; 

,然後這樣的:

route.add(c); 

如果你試圖在null引用調用一個方法,你會得到一個NullPointerException

0

通過

List<Customer> route = new ArrayList<>(); 
0

更換ArrayList<Customer> route = null;你怎麼稱呼它之前,初始化列表。您的案例中的路由爲空,這就是您遇到異常的原因。

試試這個:

ArrayList<Customer> route = new ArrayList<>();