我收到就行了以下异常,其中头部被分配,我不知道为什么:爪哇 - 字符串索引越界异常的
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 44
当使用“{1,2} ,3“作为s
的值,运行一个调试器我可以按照循环,它正确地分配commaSpot
为5,因为我认为它应该。但由于某些原因,s.charAt(commaSpot))
并不认为5是一个有效的索引,即使s是7个字符长。
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());
那么现在我觉得哑巴,谢谢!不,我希望尾部包含逗号,因为我模拟的是使用CFG头的解析器 - > set |数字,尾巴 - >,尾巴| (没有) – user2816221
@ user2816221:好的 - 删除了答案的最后一部分:) –