public CLASSNAME getBNFRule(String ruleName)
  {
    for(int leafNum=0; leafNum<List.size(); leafNum++)
    {
      String leafName = ((CLASSNAME)List.get(leafNum)).getName();
      if(leafName.compareTo(ruleName) ==0)
      {
        return (CLASSNAME)List.get(leafNum);
      } 
      else
      {
       return null;
      }    
    }
    //here
    return null;
  }

解决方案 »

  1.   

    你这样写程序,当for循环执行第一次时,如果leafName.compareTo(ruleName) ==0为false,就执行else里语句,返回null了。
    应该这样写。
    public CLASSNAME getBNFRule(String ruleName)
      {
        int count = List.size();      //记录总数
        for(int leafNum=0; leafNum<count; leafNum++)
        {
          String leafName = ((CLASSNAME)List.get(leafNum)).getName();
          if(leafName!=null && leafName.equals(ruleName))
          {
            return (CLASSNAME)List.get(leafNum);
          }  
        }    return null;  }