0

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

这是我的程序

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


    }

如您所见,如果线路很小,我会得到

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:10

如果我将字符串字段减少为字符串字段=“A|B|C|D|E|F|G|H|”,我可以避免 ArrayIndexOutOfBoundsException;

是否可以避免 Exception ,而不对 String 字段进行任何修改?

4

2 回答 2

1

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

于 2012-12-03T05:39:40.143 回答
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]);
}
于 2012-12-03T05:41:05.740 回答