假设我有一个叫做withoutX
的方法,当给定一个字符串时,如果它们是x,则删除该字符串的第一个和最后一个字母。为什么执行此代码?
我的代码是:
public String withoutX(String str) {
if(str.length()>0 && str.substring(0,1).equals("x")) {
str = str.substring(1);
}
if(str.length()>0 && str.substring(str.length()-1).equals("x")) {
str = str.substring(0,str.length()-1);
}
return str;
}
为什么这个返回空字符串( “”)时,海峡= “X”?当str =“x”在第一个if
语句之后失败时不会出现这种情况,因为str = str.substring(1)
引用了超出边界的索引(str =“x”的最大索引为0)?
'str == 0'? – Andreas
另外,'? :'具有最低优先级(除了'=')优先级,所以永远不需要为条件加上括号,但通常需要将括号括起来。 :'构造,即你需要'str.length() - (str.endsWith(“x”)?1:0)'。 – Andreas
@Andreas错字。固定。 –