插入for循环失败

Sin*_*met 0 java stringbuilder

我试图在一个for循环中插入一个Stringbuilder,但它崩溃了.这是我的代码

StringBuilder sb = new StringBuilder("This is a text");
for(int i = 0;i < sb.length();i++){
    if(sb.charAt(i) == 't'){
        sb.insert(i, 't');
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做的目的是使每个't'加倍.

rge*_*man 7

你得到了一个OutOfMemoryError,因为你没有跳过t你加倍的角色.

This is a text
          ^
This is a ttext
           ^
This is a tttext
            ^
Run Code Online (Sandbox Code Playgroud)

这种情况一直持续到内存不足为止.

您必须在插入doubled之后t通过递增来跳过刚刚添加的内容.it

if (sb.charAt(i) == 't')
{
    sb.insert(i, 't');
    i++;
}
Run Code Online (Sandbox Code Playgroud)

  • 别客气.但我只是通过运行代码来确定错误.将来,请包含错误/异常消息和堆栈跟踪.这样可以更轻松地快速诊断问题. (3认同)