j2me функция java.lang.nullpointerexception - что не так в этом? - PullRequest
0 голосов
/ 31 октября 2011

Вчера вечером, я написал эту функцию для извлечения всех тегов из строки, содержащей данные XML, но что-то не так в этом ... Помогите, пожалуйста ... эта функция возвращает java.lang.NullPointerException

  public void parseWebXML(String xd){
      int i, j, k = 0;
      String tagn, check = "";
      int spos, epos;
      byte[] len = xd.getBytes();
      tags = new String[len.length*3/4];
      int nextpos = 0;
      for(i=0;i<len.length*3/4;i++){
        spos = xd.indexOf("<", nextpos);
        epos = xd.indexOf(">", spos);
        tagn = xd.substring(spos, epos);
        if(i == 0 || i == 1 || i == 2){
            if(tagn.indexOf("/") == -1){
                tags[k] = "<"+tagn+">";
                k +=1;
            }else{
                continue;
            }
        }else{
            if(tagn.indexOf("/") == -1){
                for(j=0;j<tags.length;j++){
                    if(tags[i].equals(tags[j])){
                        check = "found";
                    }else{
                        check = "notfound";
                    }
                }
                if(check.equals("notfound")){
                    tags[i] = "<"+tagn+">";
                    k+=1;
                }else{
                    continue;
                }
            }else{
                continue;
            }
        }
        nextpos = epos + 1;
      }
  }

ошибка, которую я увидел при выполнении в режиме отладчика

TRACE: <at java.lang.NullPointerException:   0>, Exception caught in Display class
java.lang.NullPointerException:   0
 - httpcon.parseWebXML(), bci=170

Ответы [ 2 ]

1 голос
/ 31 октября 2011

тегов [] имеет только 3 элемента.

if(i == 0 || i == 1 || i == 2){
            if(tagn.indexOf("/") == -1){
                tags[k] = "<"+tagn+">";
                k +=1;

если i> 3, то теги [i] возвращают ноль. И тэги [i] .equals бросают NPE

0 голосов
/ 31 октября 2011

Вы инициализировали теги [], но не каждую из его ячеек, поэтому tags[i].equals(tags[j]), вероятно, вызвало NPE (tags[i] равно нулю).

...