基本的な考え方: 2例があります。最初の文字は母音か母音ではない。 これは、我々があれば、そのように行うの前に、我々はそれを行うことができます例独立した最初の文字を印刷したいので、私たちは次のような構造
if(isVowel(firstLetter)){
//handle case with first letter a vowel
}else{
//handle other case
}
を必要とすることを意味します。 どちらの場合でも、関数を再帰的に呼び出すことができます。 母音の場合、部分文字列を3から最後まで取ります。
str.subString(3, str.length()-1);
そして最後には、エッジケースを忘れないでください:あなたは空の文字列を渡したらどうなりますか? 最初の文字は母音ですが、後に1文字しかないのですか?次の実装で この結果:
public void printSpecial(String str){
if(str==null || str.isEmpty()){
return; //No letters to print
}
char firstLetter = str.charAt(0);
System.out.print(firstLetter); //print the current letter
if(isVowel(firstLetter)){
if(str.length()<4){
return; //Not enough letters to continue
}
printSpecial(str.substring(3, str.length()-1));
} else {
if(str.length()==1){
return; //Last letter done
}
printSpecial(str.substring(1, str.length()-1));
}
}
だから唯一の事は法に
public boolean isVowel(char letter){
}
を実装されてやって左しかし、私はあなたに、このアップを残しておきます:)
をあなたはまだ何を試しましたか?コードのサンプルがありますか? – NewBie1234
[String class](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html)を参照してください。charAt(int index)、replace(char oldChar、char newChar )、そしてあなたのプロジェクトに役立つメソッド()があります。 – AimeTPGM
「バナナ」がバナになることを意味すると思います。最初の「a」は中間の2文字(「na」)を削除し、最後の「a」はそのまま残しています。正規表現で簡単にこれを行うことができますが、それはあなたが探しているものではない可能性があります。とにかく、 'output = input.replaceAll("([aeiou])??、 "$ 1"); 'となります。デモについては、[regex101](https://regex101.com/r/KduWCQ/1)を参照してください。 – Andreas