拆分时获取java.lang.ArrayIndexOutOfBoundsException

时间:2014-05-01 09:53:40

标签: java arrays split

获取java.lang.ArrayIndexOutOfBoundsException此错误请帮助。

以下是代码

public void extractData(String stringToExtract)
{       
        String metaDataValue = stringToExtract;
        //System.out.println(metaDataValue);

        String [] splitMetaDataValue =  metaDataValue.split(",");
        String [] tokenValue = null;
        for (int i = 0; i<splitMetaDataValue.length ; i++)
        {
            tokenValue = splitMetaDataValue[i].split(":");
            System.out.println(tokenValue[0]+"->"+tokenValue[1]);
        }
}//extractData

4 个答案:

答案 0 :(得分:1)

分割时,总是建议检查结果。

在你做之前:

tokenValue = splitMetaDataValue[i].split(":");

检查splitMetaDataValue的长度。

答案 1 :(得分:1)

splitMetaDataValue[i].split(":").length必须为2才能使以下内容有效:

  

的System.out.println(tokenValue [0] + “ - &gt;” 中+ tokenValue [1]);

tokenValue = splitMetaDataValue[i].split(":");

if (tokenValue.length > 1) {
    System.out.println(tokenValue[0]+"->"+tokenValue[1]);
}

答案 2 :(得分:0)

表达式splitMetaDataValue[i].split(":")不能保证产生2 Strings的数组 - 在尝试访问其元素之前检查数组长度

if (tokenValue.length >= 2) {
  System.out.println(tokenValue[0]+"->"+tokenValue[1]);
}

答案 3 :(得分:0)

您需要检查String [] tokenValue的大小。 行

System.out.println(tokenValue[0]+"->"+tokenValue[1]);

必须导致ArrayIndexOutOfBounds异常,因为它们假设splitMetaDataValue [i]将包含&#34;:&#34;。