我在分配 head 的行上遇到以下异常,我不知道为什么:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 44
当使用 "{1,2},3" 作为 的值时s
,运行调试器我可以跟随循环,并且它正确地分配commaSpot
为 5,正如我认为的那样。但是由于某种原因s.charAt(commaSpot))
,即使 s 是 7 个字符长,它也不认为 5 是一个有效的索引。
int commaSpot = 0;
int bracePairs = 0;
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '{') bracePairs++;
if(s.charAt(i) == '}') bracePairs--;
if(s.charAt(i) == ',' && bracePairs == 0) {
commaSpot = i;
break;
}
}
head = s.substring(0, s.charAt(commaSpot));
tail = s.substring(s.charAt(commaSpot), s.length());