import java.util.*;
import java.io.*;
import java.lang.*;
public class Tester {
public static void main(String a[]) {
String s;
int len;
Scanner sc=new Scanner(System.in);
s=sc.nextLine();
StringBuffer sb=new StringBuffer(s);
int i= 1;
len= sb.length();
len=len-1;
while(i<=len)
{
sb.deleteCharAt(i);
i=i+2;
}
System.out.println(sb);
}
}
I/P:
阿布德夫吉
操作/操作:
线程"main"中的异常 java.lang.StringIndexOutOfBoundsException: 字符串索引超出范围:7 at java.lang.AbstractStringBuilder.deleteCharAt(AbstractStringBuilder.java:824( at java.lang.StringBuffer.deleteCharAt(StringBuffer.java:441( at 测试人员(测试.java:29(
这是因为每次删除字符时,字符串的长度都会减少 1,并且您仍在迭代直到原始长度。在代码中应用以下更改,以便i
的值不会超过String
的当前长度,并且while
条件满足直到有效长度:
while(i<=len)
{
sb.deleteCharAt(i);
i=i+2;
len--;
}
问题是每次调用 deleteCharAt 时,它都会将 sb 长度减去 1,因此在某些时候 i=7 但 sb 长度为 5,我们正在删除 i=7 处的索引,这会导致您看到的索引越界异常。 您可以将长度减少 1 以在循环中解决此问题。len=len-1