разделить переменные из текста - PullRequest
0 голосов
/ 22 апреля 2011

этот метод запускает исключение, и я не нашел почему.

private void loadTrace () {
BufferedReader reader = new BufferedReader(
  new StringReader(logTextArea.getText()));



String str;


try {


while(reader != null)

{

      str =reader.readLine();

String [] splitted = str.split("\\|");

String b = splitted[1].trim();
String c = splitted[2].trim();
String d = splitted[3].trim();
String Chemin;
String Type = "action" ;
String Description;
if (d!=null) {
    Description=d;
}
 else Description ="Afficher onglet";
if (c!= null) {
Chemin= b+"."+c;
    }
 else Chemin =b;
String trace =Type+" "+Description +" "+Chemin ;

ArrayList<String> p = new ArrayList<String>();

p.add(trace);
System.out.println(p);


}


    }


      catch(IOException e) {
  e.printStackTrace();
     }
}

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Не зная исключения, я могу предположить, что одна из потенциальных проблем заключается в следующих строках: -

String [] splitted = str.split("\\|");

String b = splitted[1].trim();
String c = splitted[2].trim();
String d = splitted[3].trim();

Вы получаете доступ к splitted, не проверяя, имеет ли оно значение null или размер, поэтому вы можете столкнуться с исключением ArrayIndexOutOfBound, если splitted длина меньше 3. Поэтому измените код следующим образом -

String [] splitted = str.split("\\|");
    if(splitted!=null && splitted.length==3){
      String b = splitted[0].trim();
      String c = splitted[1].trim();
      String d = splitted[2].trim();
    }
2 голосов
/ 22 апреля 2011

Исключение NullPointerException, которое вы получаете теперь, когда вы исправили ArrayIndexOutOfBound, вызвано тем, что вы используете тест в цикле while:

while(reader != null)
{
  ...
}

читатель всегда будет ненулевым, поэтому этот цикл никогда не закончится.Вам необходимо проверить, возвращает ли

reader.readLine()

ноль (с указанием EOF).

1 голос
/ 22 апреля 2011

Полагаю, вы получаете ArrayIndexOutOfBoundException , верно? (Вы должны сообщить нам, какое исключение вы получаете)

Проблема может быть в следующих строках. Вы должны проверить размер массива, а не просто «надеяться», что он состоит из трех частей.

String b = splitted[1].trim();
String c = splitted[2].trim();
String d = splitted[3].trim();
...