我想为以下输入提供以下输出:
input: adele
output: ae
代码:
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));
}
}
但我一直得到同样的意见。
答案 0 :(得分:4)
这里有很多问题:
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;
}
}
旁注:由于你只在一个案例中使用StringBuilder
,你可以在else if
内移动它的声明(这样,你就不会创建一个无用的对象。字符串少于3个字符)。