2017-11-30 4 views
-2

javaでエラーが発生し続けているのですが、なぜ "return文が見つからない"のかわかりません。私がしようとしているのは、2つのパラメータ(Stringとchar)を持つメソッドを作成し、文字列にcharが含まれているかどうかをチェックし、比較に基づいてブール値を返すことです。これまで私が持っていたことは次のとおりです。ブール値を返そうとしたときにreturn文が見つからない

public static boolean compare(String h, char x){ 

int counter = 0; 
for(int i = 0; i < h.length(); i++){ 
    counter++; 
    if(h.charAt(i) == 'o'){ 
    return true; 
    } 
    else 
    return false; 
} 

    } 

この場合も、コンソールのエラーは「return文がありません」です。 私はJavaの専門家ではなく、おそらく私のコードでエラーが多発していることに注意してください。私は事前に謝罪しています。

編集:字下げを見ないでください。ここでコードをコピーして貼り付けてください。 編集2: "h"は私のコードで "Hello world"です。

+0

else codeに中括弧を追加してチェックします。 –

+3

ヒント:hが空の場合はどうですか? –

+0

*インデントを見ないでください。*あなたのコードがインデントされていると、私と他の人はそれを読むことができません。正しく意図していれば、あなたの問題は明らかになります。 –

答えて

1

ブール結果をループに戻すのではなく、変数に割り当てる必要があります。 forループの後にreturn文を追加すると、問題が解決されます。 HTH

public static boolean compare(String h, char x){ 

     int counter = 0; 
     boolean flag = false; 

     for(int i = 0; i < h.length(); i++){ 
     counter++; 
     if(h.charAt(i) == 'o'){ 
      flag = true; 
     } 
     else 
      flag = false; 
     } 
     return flag; 
} 
+0

'String'パラメータ' h'に与えられた 'char'値' o'をロジックが含むべきであると仮定すると、 'String'の最後の文字が' o'の場合のみ 'true'、それ以外の場合は' false '。上記のロジックの代わりに 'if-else'を使うことができます(または)' char'の最初の出現を見つけたら 'for-loop'を壊すことができます。私の仮定が正しい場合 – Praveen

0

これは、あなたのifelseの条件がforループにあるためです。 forループ自体は条件付きのループです。

ifまたはelseが未達の場合は、シナリオがあります。 forループの外側にブール値を返す必要があります。

例のシナリオ: 'H' が空の文字列です。

EDIT:そして、あなたの文あたりとして「h」は「Hello World」の私のコードで、コンパイル時に、コンパイラは「hに渡されている値を見ていないされています' お客様のと比較するメソッドは個別のIDであり、1回のみの使用に限定されるものではありません。

0

h.length()0であれば、それはreturn文を欠落しているため、エラーを表示して、その後のforループ内のコードは到達できない、あなたのループi < h.length()用のため。

関連する問題