如果字母 x 作为任何给定字符串的第一个或最后一个字符出现,我将尝试删除它。为什么我的代码不检查长度为 0 的字符串,即使我已经在我的代码中考虑了它?
我已经尝试过使用 if 语句来检查长度是否为 0,如果是,则返回原始字符串。我也试过返回一个具有相同值的空字符串。
public String withoutX(String str) {
if (((str.charAt(0)=='x') || str.charAt(str.length()-1) == 'x') && str.length()>=2){
if (str.charAt(0)=='x'){
str = str.substring(1,str.length());
} if (str.charAt(str.length()-1) == 'x'){
str = str.substring(0,str.length()-1);
}
} if (str.length()==1 && str == "x"){
return "";
} if (str.length()==0){
return str;
// the above if statement (length = 0) does not work
} else{
return str;
}
}
预期的结果是它返回不带字母 x 的字符串。这已针对所有字符串实现,但空字符串除外,它表示索引超出范围。
最佳答案
if (str.length() == 0) {
return str;
}
它应该在方法体的顶部。或者,至少,它应该先于获取 str.charAt(0)
。
- 有
String#isEmpty
. - 您比较
String
的方式是错误的。 Useequals
instead of==
. - 始终在通过索引访问字母之前验证长度。确保字符串中的索引存在。
关于java - 如何让我的代码也检查长度为 0 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899458/