我希望删除具有相同值的相邻字母。
喜欢:abbcddaffa变成----> acddaffa ----> acaa ----> ac
i = -1
当我将此{{1}}添加到循环的末尾以重新启动循环时,此StringIndexOutOfBounds异常会继续发生。但后来我需要重新启动循环。
答案 0 :(得分:3)
下面:
for(int i = 0; i<sb.length(); i++){
您将i
循环到sb.length()
,因此i
在循环中始终小于sb.length()
。这意味着i
将始终是字符串构建器的有效索引。到目前为止一切都很好。
然后在下一行:
if(sb.charAt(i)==sb.charAt(i+1)){
您正在i+1
检查角色!如果这是循环的最后一次迭代,i
将是sb.length() - 1
,而i+1
将是sb.length()
,这不是有效索引!
要解决此问题,只需循环直到i < sb.length() - 1
。
for(int i = 0; i<sb.length() - 1; i++){