2017-03-16 2 views
0

で復帰方法について混乱しています:私は母音を探している方法を持っているのjava

public boolean isVowel(char ch) { 
    String vowels = "aeiou"; 
    char[] chars = vowels.toCharArray(); 
    for (char letter : chars) { 
     if (letter == Character.toUpperCase(ch) || letter == Character.toLowerCase(ch)){ 
      return true; 
     } 
    } 
    return false; 
} 

はなぜこの文は常にfalseを返していないのですか?最後の行は 'for'ループと条件文の両方の外側にあります。内部ステートメント内で返されるtrueをオーバーライドする必要はありませんか?

+3

あなたは返信文について混乱しています。実行される最初の(そして唯一の)return文は、メソッドによって返される値を決定します。 – Eran

+0

ループ内でtrueを返す可能性のあるすべての条件がチェックされます。したがって、どちらの条件も満たされない場合はfalseを返すとよいでしょう。 –

+0

ところで、最初の2行は、元の文字列を作るのではなく、単純な 'char [] chars = {'a'、 'e'、 'i'、 'o'、 'u'};'に短縮することができますそれを超えて使用しないでください。 – RealSkeptic

答えて

2

return終了時にメソッドの戻り値を設定するだけでなく、メソッドの実行も終了します。あなたのケースでは、それはreturn true;に達すると、ループを終了し(完了していない)、メソッドはすぐにtrueを返します。

ループのifが、return true;に分岐しない場合は、メソッドの最後に到達すると、falseが返されます。

1

Javaでは、メソッドで戻るとコードは終了し、そのメソッドの後半では何も実行しません。

コードがforループで返されると、そのメソッドの後のコード(return falseなど)は実行されません。

1

returnを使用すると、メソッドの実行がそこで終了し、値が返されます。 return true;trueを返しますが、他のreturnステートメントが返すものはありません。

return false;は、ifの条件が1度でも満たされない場合にのみ実行されます。

関連する問題