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;
}
は、なぜこれが "STR = X" 空の文字列( ")" を返すのですか? str = str.substring(1)
が範囲外のインデックスを参照しているため(最初のif
ステートメントの後でstr = "x"の最大インデックスが0)、str = "x"が失敗することはありませんか?
'str == 0' ???? – Andreas
また、 '? : 'は優先順位を除いて(' = 'を除いて)最も低いので、条件をカッコで括る必要はありませんが、しばしば'? : '構造体、つまり' str.length() - (str.endsWith( "x")?1:0) 'が必要です。 – Andreas
@Andreas typo。一定。 –