Java:将额外的令牌动态附加到String

时间:2012-12-03 05:29:56

标签: java file-io

我正在解析文件,有时我得到一个小行或大行。 如果线很小,是否可以在线附加额外的令牌?

这是我的程序

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


    }

如你所知,如果线条很小,我会得到

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:10

这里我可以避免ArrayIndexOutOfBoundsException如果我将字符串字段减少到字符串字段=&#34; A | B | C | D | E | F | G | H |&#34 ;;

是否可以避免异常,而不对字符串字段进行任何修改?

2 个答案:

答案 0 :(得分:1)

在分割并获取其子字符串之前检查字符串的长度。

答案 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]);
}