2013-10-21 1 views
0

을 처리하려고합니다.하위 문자열은 나에게 문제를주고 내가 여기에 코드 조각이 잘못된 (음수) 인덱스

분명히 내가 무엇을 필요로의 지수는 253이다
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) 

왜 말하는가 -240 때 다음과 같이 그러나, 나는 얻을 출력은?

+0

','의 색인은 무엇입니까? 확인 해봤 었니? –

+0

정수 오버 플로우? –

+0

idIndex가 240보다 큰 경우, panoBuffer.indexOf (',') –

답변

2

나는 panoBuffer에 쉼표가 두 개 이상 들어 있다고 가정하며 이는 아마도 idIndex 앞에 오는 쉼표를 찾게됩니다.

시도 대신 panoBuffer.indexOf(',', idIndex+1)panoBuffer.indexOf(',')를 교체, 당신은idIndex을 오는 첫 번째 쉼표를 찾을 수 이런 식으로.

또한 String#indexOf(int,int)에 대한 설명서에 지정된대로 indexOf의 결과가 -1보다 큰지 확인하여 실제로 값을 찾았는지 확인해야합니다.

+0

idIndex와 ","사이의 문자열이 필요합니다. 여기서 쉼표는 idIndex 뒤에옵니다. 내가 전체 panoBuffer의 첫 번째 쉼표를 가져 오는 동안 실수를 범했음을 알았지 만 내가 도달하려고 시도하는 쉼표는 처음이나 마지막 종류가 아닙니다. – Praxbyr

+1

@Praxbyr 내 해결책은 바로 그 일을 할 것이다. idIndex 뒤에 오는 첫 번째 쉼표를 찾을 것이다. (마지막일지도 모른다.) –

+0

고마워! 답장을 제출하기 전에 답을 업데이트 한 것 같습니다. 이제 작동합니다! – Praxbyr