0

我这里有一段代码给我带来了麻烦:

    idIndex = panoBuffer.indexOf("\"photo_id\":");
    System.out.println(idIndex);
    photos[i].id = panoBuffer.substring(idIndex, panoBuffer.indexOf(','));

中间线用于调试目的。但是,我得到的输出如下:

253
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -240
at java.lang.String.substring(Unknown Source)
at panoramio.Panoramio.jsonToArray(Panoramio.java:248)
at panoramio.Panoramio.main(Panoramio.java:83)

当我需要的索引显然是 253 时,为什么它说 -240?

4

1 回答 1

2

我假设panoBuffer包含多个逗号,这可能会导致您发现 . 之前出现一个逗号idIndex

尝试替换 panoBuffer.indexOf(',')panoBuffer.indexOf(',', idIndex+1),这样您将找到.之后 idIndex的第一个逗号。

您还应该确保通过验证结果indexOf是否大于String#indexOf(int,int)-1文档中指定的值来检查您是否确实找到了一个值。

于 2013-10-21T18:41:11.957 回答