-4

文字列を受け取り、文字列に母音が含まれている場合に true を返す、再帰的なブール値メソッド containsVowel を記述します。文字列に母音が含まれる場合: 文字列の最初の文字が母音である、または 文字列の残りの部分 (最初の文字を超える) に母音が含まれている これは私のプログラミング ラボ用です これが私が持っているものです。エラーが発生し、ヘルプを提供していません。
何が間違っているかを修正するのを手伝ってください、ありがとう。

boolean containsVowel(String s)
{ 
    if(s.containsVowel("aeiouAEIOU")) 
    {
        return true;
    }
    else 
    {
        (s.substring(!=));
        return false
    }
}

コンパイラ エラー

コードラボ分析

備考: コンパイルに誤りがあるようです

これは私が以前にした別の質問です:

文字列を受け取り、文字列内の文字数を返す、再帰的な int 値のメソッド len を記述します。文字列の長さ: 文字列が空の文字列 ("") の場合は 0。最初の文字を超える文字列の残りの長さよりも 1 長い。

私のプログラミングラボが探していた答えは次のとおりです。

int len(String s)
{
if(s.equals("")){
    return 0;
}
 else {
return (1+len(s.substring(1)));}
}
4

4 に答える 4

11

このコードにはいくつかの問題があります。

  1. s.containsVowel. sは String であり、Java String にはメソッドがありませんcontainsVowelcontainsVowel代わりに、その文字列 (存在しない) ではなく、独自のメソッドを呼び出す必要があります。

  2. その変更を行うと、「基本ケース」がないため、これは無限再帰メソッドになります。退場させてしまうケース。

  3. (s.substring( !=));コンパイルしません。ここで何をしようとしているのかさえわかりません。

  4. return falseセミコロンで終わらない。コードをコンパイルする場合は、これが必要です。

疑似コードでこのアルゴリズムにアプローチする方法は次のとおりです

containsVowel(String input)
    if (empty(input)) return false  //the base case
    char firstChar = getFirstCharOf(input)
    return firstChar.isAnyOf("vowelCharacters") || containsVowel(inputWithoutFirstChar(input))
于 2013-05-23T23:05:08.707 に答える
3

このコードを捨てて、基本原則から始めましょう。(あなたが持っていたコードについての私の1つの発言は、プログラムは言語がそれらが書かれることを期待する方法で正確に書かれなければならないということです(s.substring(!=));.頭の中で完全に理解できたとしても、100% 無意味です。)


再帰的な方法の考え方は、基本ケースと繰り返し条件があるということです。

containsVowel の基本ケースは空の文字列 "" で、false を返します。

繰り返し条件は、現在の文字が母音でない場合は true を返し、それ以外の場合は、1 文字短い文字列で containsVowel を呼び出します。このようにして、母音が見つかるまですべての文字がチェックされ、文字がなくなると (基本ケース)、中止されます。

現在の文字が母音かどうかは、 を見てs.charAt(0)を使用indexOfして、 に含まれているかどうかを確認でき"aeiouAEIOU"ます。

実行することで、文字列を1つ短くすることができますreturn containsVowel(s.substring(1));(これによりs、2番目の文字から始まる文字列が作成されます。たとえば、1つ短くなります)。

メソッドの書き方がわかりますか?

于 2013-05-23T23:07:31.043 に答える
0

Java の行はセミコロンで終わります。あなたは1つ欠けているようです。

return false
于 2013-05-23T23:03:40.710 に答える
0
  • containsVowel()はStringの有効なメソッドではありません。
  • return falseステートメントはセミコロンで終わります (したがって、return false;
  • s.substring(!=)!=は有効なシンボルではないため、構文エラーです。
  • s.substring()new を作成しString、その結果を(もちろん、修正されたシンボルの後)変数にキャプチャしていません。

String に母音があるかどうかを解読する簡単な方法があります。これには、チェックしたい母音のセットである正規表現が含まれており (fly という単語はどうですか?)、グラフィカルな正規表現チェッカーを使用して検証できます。この部分は、読者への演習として残しておきます。

于 2013-05-23T23:08:14.643 に答える