2016-05-07 89 views
-3

爲了避免添加值問題,我應該初始化rule_prio的值? ... 1)rule_prio.add(int x,Rule r)不起作用; 2)使用現有的EList對其進行初始化不起作用3)temp.remove(int)實際上是刪除值或只修改指針?EList的初始化

private static EList<Rule> priorite(EList<Rule> R) { 

     Rule r; 
     int min ; 
     int p=-1; 
     int last_p = -1; 
     EList<Rule> rule_prio = null; 
     EList<Rule> temp = R; 

     while(temp.isEmpty()==false) 
     { 
      min=temp.get(0).getPriority(); 
      for (int i=1; i<temp.size(); i++) 
      { 
       r = temp.get(i); 
       if (r.getPriority() < min) 
       { 
        min = r.getPriority(); 
        p = i; 
       } 
      } 
    if (p!= -1 && p!= last_p) 
    { 
     rule_prio.add(temp.get(p)); 
     temp.remove(p); 
     last_p = p; 
    } 

} 
    return rule_prio; 
    } 

或者它可能是規則模型的問題?

+0

什麼是「的EList」?哪條線正好導致NPE被拋出?您是否測試了該行上的變量以找出哪一個爲空?你知道如何調試NPE的一般原則嗎? –

+0

顯示您的堆棧跟蹤並顯示,導致NullPointerException –

+0

行rule_prio.add(temp.get(p))的代碼行;並沒有我沒有任何關於調試NPE的 – pap

回答

2

是初始值零rule_prio問題

肯定是......如果你聲明

EList<Rule> rule_prio = null; 

,然後做到這一點:

rule_prio.add(temp.get(p)); 

它使你得到一個NPE感...

你必須給init 的EList對象如何以往任何時候都初始化...

EList<Rule> rule_prio = ...//init the EList here; 
+0

這是它必須是空的問題 – pap

+0

我試圖初始化它與R但增加成爲不可能從0不刪除,這意味着我會失去指針的位置.....(不能更清楚我不是一個很好的英文揚聲器) – pap

+0

我不知道什麼EList是,但是rule_prio必須在嘗試將某些東西放入它之前進行初始化.... –