我这里有一段代码,给我带来麻烦:
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?
最佳答案
我假设panoBuffer
包含多个逗号,这可能导致您发现在idIndex
之前的逗号。
尝试更换
取而代之的是panoBuffer.indexOf(',')
和panoBuffer.indexOf(',', idIndex+1)
,这样您会发现idIndex
之后的第一个逗号。
您还应确保通过验证indexOf
的结果是否大于String#indexOf(int,int)文档中指定的-1
来检查是否确实找到了一个值。
关于java - 子字符串尝试处理错误的(负)索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19502099/