2012-12-03 52 views
0

我正在解析一個文件,有時我得到一個小行或大行。 如果行很小,是否可以追加帶額外標記的incase?Java:將額外的標記動態添加到字符串

這是我的計劃

private static String[] LISTOFFIELDS = null; 

String fields = "A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z"; 

String line = "OIUU||HHH|INBVC INB|PP|NN|OO|PPPPP||"; 

String[] totaltokens = line.split("\\|", LISTOFFIELDS.length); 






private static HashMap<String, Object> ParsedValues(String[] totaltokens) { 

     HashMap<String, Object> map = new HashMap<String, Object>(); 

     for (int i = 0; i < LISTOFFIELDS.length; i++) { 
      String fieldName = LISTOFFIELDS[i]; 
      map.put(fieldName, totaltokens[i]); 
     } 


    } 

正如你可以看到,如果該行是小我將得到

異常線程 「main」 java.lang.ArrayIndexOutOfBoundsException:10

這裏我可以避免ArrayIndexOutOfBoundsException如果我減少字符串字段字符串字段=「A | B | C | D | E | F | G | H |」;

是否有可能避免異常,而不對字符串字段做任何修改?

+2

使用StringBuilder的* *而不是*字符串*。 – adatapost

+0

爲什麼你的'LISTOFFIELDS'是'null'? –

回答

1

檢查字符串的長度,然後再進行拆分並獲取其子字符串。

0

只是減少你的循環迭代次數:

int size = Math.min(LISTOFFIELDS.length, totaltokens.length); 
for (int i = 0; i < size; i++) { 
    String fieldName = LISTOFFIELDS[i]; 
    map.put(fieldName, totaltokens[i]); 
} 
相關問題