我想要以下输入的以下输出:
input: adele
output: ae
Run Code Online (Sandbox Code Playgroud)
代码:
public class delDel {
public static String delDel(String str) {
StringBuilder sb = new StringBuilder();
if(str.length() < 3){
return str;
}
else if(str.substring(1, 3).equals("del")){
StringBuilder afterRemove = sb.delete(1, 3);
return afterRemove.toString();
}
else{
return str;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String yourStr = input.nextLine();
System.out.println(delDel(yourStr));
}
}
Run Code Online (Sandbox Code Playgroud)
但我不断得到相同的输入。
这里有多个问题:
StringBuilder未使用输入字符串进行初始化。它应该StringBuilder sb = new StringBuilder(str);如此,它始终是空的。substring和delete方法与最后一个索引不包括在内一起工作。因此,要从索引 1 开始获取长度为 3 的子字符串,您需要调用str.substring(1, 4).更正的代码:
public static String delDel(String str) {
StringBuilder sb = new StringBuilder(str);
if(str.length() < 3){
return str;
}
else if(str.substring(1, 4).equals("del")){
StringBuilder afterRemove = sb.delete(1, 4);
return afterRemove.toString();
}
else{
return str;
}
}
Run Code Online (Sandbox Code Playgroud)
旁注:由于您仅StringBuilder在一种情况下使用 the ,因此您可以将其声明移到 the 内else if(这样,当 String 少于 3 个字符时,您将不会创建无用的对象)。