java.lang.StringIndexOutOfBoundsException: String index out of range: 3

privatestaticStringsoundexCoding2(StringsoundexCoding){intindex=1;StringsoundexCoding... private static String soundexCoding2(String soundexCoding){
int index=1;
String soundexCoding2=soundexCoding.substring(0,1);

while (index < soundexCoding.length()){
char i =soundexCoding.charAt(index);
char j =soundexCoding.charAt(index+1);
if (i==j){
soundexCoding2 = soundexCoding2 + soundexCoding.substring(index,index+1);
index +=2;
}
else{
soundexCoding2 = soundexCoding2 + soundexCoding.substring(index,index+1);
index ++;
}
}
return soundexCoding2;
}
展开
 我来答
vyyv02
推荐于2016-05-24
知道答主
回答量:24
采纳率:0%
帮助的人:17万
展开全部
最基本的错误是
while (index < soundexCoding.length()-1)
因为你在循环里用了
char j =soundexCoding.charAt(index+1);
看不出来你这段代码的实际用途
我猜你是想消除重复字符吧
private static String delRepeat(String inputStr){
String outputStr=inputStr.substring(0, 1);
char flag1=inputStr.charAt(0);
for(int i=1;i<inputStr.length();i++){
char flag2=inputStr.charAt(i);
if(flag1!=flag2){
outputStr=outputStr+flag2;
}
flag1=flag2;
}
return outputStr;
}
追问
你说对了 不过我还是不能理解我哪里错了 求讲解
追答
关键是你程序中的这句
if (i==j){
soundexCoding2 = soundexCoding2 + soundexCoding.substring(index,index+1);
index +=2;
}
如果与上一个字符相同,跳过这个字符写入下一字符
如果遇到"aaa”,那么后边的两个a只能消除一个
herrywood
2012-02-27 · TA获得超过869个赞
知道小有建树答主
回答量:523
采纳率:66%
帮助的人:486万
展开全部
字符串中的字符是从0开始,取后一个字符下标为长度 - 1
所以当index = soundexCoding.length() - 1时,char j =soundexCoding.charAt(index+1);就超界了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式