我试图从字符串中删除奇数字符(请检查下面的程序),我得到一个异常 import java.util.*; 导入java.io.*; 导入java.lang.*; 公共类测试器{ 公共静态void main(字符串a[]{ 字符串s; 内伦; 扫描仪sc=新的扫描仪(System.in); s=sc.nextLine(); StringBuffer sb=新的StringBuffer; int i=1; len=sb.length(); len=len-1; while(i
这是因为每次删除一个字符时,字符串的长度都会减少1,并且您仍在迭代,直到达到原始长度。请在代码中应用以下更改,以便我试图从字符串中删除奇数字符(请检查下面的程序),我得到一个异常 import java.util.*; 导入java.io.*; 导入java.lang.*; 公共类测试器{ 公共静态void main(字符串a[]{ 字符串s; 内伦; 扫描仪sc=新的扫描仪(System.in); s=sc.nextLine(); StringBuffer sb=新的StringBuffer; int i=1; len=sb.length(); len=len-1; while(i,java,char,string-length,stringbuffer,Java,Char,String Length,Stringbuffer,这是因为每次删除一个字符时,字符串的长度都会减少1,并且您仍在迭代,直到达到原始长度。请在代码中应用以下更改,以便i的值不会超出字符串的当前长度,并且的条件满足直到有效长度: import java.util.*; import java.io.*; import java.lang.*; public class Tester { public static void main(String a[]) { String s; int
i
的值不会超出字符串的当前长度,并且的条件满足直到有效长度:
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);
}
}
while(i这是因为每次删除一个字符时,字符串的长度都会减少1,并且您仍在迭代,直到原始长度。请在代码中应用以下更改,以便i
的值不会超出字符串的当前长度,并且while
条件满足直到有效长度:
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);
}
}
while(i问题是每次调用deleteCharAt时,它都会将sb长度减去1,因此在某个点i=7,但sb长度是5,我们将在i=7处删除索引,这会导致您看到的索引越界异常。
您可以将长度减少1以在循环中解决此问题。len=len-1问题是每次调用deleteCharAt时,它都会将sb长度减少1,因此在某个点i=7,但sb长度是5,我们将删除i=7处的索引,这将导致您看到的索引越界异常。
您可以将长度减少1以修复循环中的此问题。len=len-1您正在尝试删除索引中不存在的字符。您正在尝试删除索引中不存在的字符。