为什么StringIndexOutOfBounds会发生这段代码的异常?

时间:2018-02-06 07:05:10

标签: java

我希望删除具有相同值的相邻字母。

喜欢:abbcddaffa变成----> acddaffa ----> acaa ----> ac

i = -1

当我将此{{1}}添加到循环的末尾以重新启动循环时,此StringIndexOutOfBounds异常会继续发生。但后来我需要重新启动循环。

1 个答案:

答案 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++){