0

ファイルを解析していますが、小さな行や大きな行が表示されることがあります。行が小さい場合に備えて、行に追加のトークンを追加することは可能ですか?

これは私のプログラムです

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

ここで、文字列フィールドを文字列フィールドに減らすと、ArrayIndexOutOfBoundsExceptionを回避できます= "A | B | C | D | E | F | G | H |";

文字列フィールドに変更を加えることなく、例外を回避することは可能ですか?

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 に答える