Hum*_*bir 2 java stringbuilder
我试图仅从第一个和第二个索引中删除每个“x”(无论大小写),但我的程序仅删除第一个索引的字母,然后循环而不删除第二个索引。
Scanner userIn = new Scanner(System.in);
StringBuilder str = new StringBuilder();
str.append(userIn.nextLine());
for(int i = 0; i<2; i++) {
if((str.charAt(i) == 'x') || (str.charAt(i) == 'X')) {
str = str.deleteCharAt(i);
}
}
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
这是因为当您删除开头的字母时,所有字符都会发生变化。因此对于String str = "xxHello";:
x x H e l l o
0 1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
然后当你删除第一个时x:
x H e l l o
0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
因此,在第二次迭代中,它将检查第一个索引(在本例中H)是否为X。要解决此问题,您可以设置i为 1,然后循环到零:
StringBuilder str = new StringBuilder();
str.append(userIn.nextLine());
for(int i = 1; i> -1; i--) {
if((str.charAt(i) == 'x') || (str.charAt(i) == 'X')) {
str = str.deleteCharAt(i);
}
}
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
输出:
Hello
Run Code Online (Sandbox Code Playgroud)