これが問題です: 文字列を指定して、'y' または 'z' で終わる単語の数を数えます。つまり、"heavy" の "y" と "fez" の "z" は数えますが、"y" は数えません。 ' は「黄色」です (大文字と小文字は区別されません)。直後にアルファベット文字がない場合、y または z は単語の末尾にあると言えます。(注: Character.isLetter(char) は、char がアルファベット文字かどうかをテストします。)
countYZ("fez day") → 2
countYZ("day fez") → 2
countYZ("day fyyyz") → 2
これは私のコードです:
public int countYZ(String str) {
int count = 0;
for (int i=0; i<str.length(); i++){
if (Character.isLetter(i) && (Character.isLetter(i+1)==false || i+1==str.length()) && (Character.toLowerCase(str.charAt(i))=='y' || Character.toLowerCase(str.charAt(i))=='z')){
count++;
}
}
return count;
}
面倒なことはわかっていますが、なぜ今うまくいかないのかを理解しようとしています。実行するたびに「0」を返します。if ステートメントでは、次のことをチェックしています。i+1 は文字ですか、それとも文字列の末尾ですか? 最後に、i が 'y' または 'z' の場合。助けてくれてありがとう!