开发者

split variables from texte

this method runs an exception and i didn't find why.

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();
     }
}
开发者_开发技巧


Without knowing the exception I can guess one of the potential issue is in these lines:-

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

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

You are accessing splitted without checking if it is null or size so you may run into ArrayIndexOutOfBound exception if splitted length is less than 3. So modify the code this way-

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();
    }


The NullPointerException you get now that you've fixed the ArrayIndexOutOfBound is because of the test you use in your while loop:

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

reader will always be non-null so this loop will never end. You need to test if

reader.readLine()

returns null (indicating EOF).


I guess you get an ArrayIndexOutOfBoundException, right? (You need to tell us, what Exception you receive)

The problem could be in the following lines. You should check the size of the array and not just "hope" that it has three parts.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜