2016-05-07 52 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必须在尝试将某些东西放入它之前进行初始化.... –