2016-07-10 13 views
2

私はかなり新しい(特にC#)コーディングです - これはプログラミングの基礎クラスの課題です - 私は答えを探していません - なぜ私はこれら2つを得るのか説明する人を探しています'エラーは、私がハングマンのゲームで文字や完全な単語のユーザーの推測かどうかを確認するために作成することになっているブールメソッドのエラーです。 私が取得したエラーは、 '到達不能なコードが検出されました - idx ++の部分についてです - 他の別のメソッドで使用したように意味がありません。 そしてProgram.CheckGuess(char []、char []、char 。。[]、文字列:すべてのコードパスが値を返さないこれらのエラーはなぜ発生しますか? C# - ハングマンゲーム

私は完全に側面を終了していないよそれはおそらく私の顔を見つめています知っている - ちょうどいくつかのガイダンスを探しているおかげで

static bool CheckGuess(char[] secrets, char[] mask, char[] letters, string guess) 
{ 
    int misses = 0; bool condition = false; 

    for (int idx = 0; idx < secret.Length; idx++) 
    { 
     guess.ToCharArray(); 
     if (mask[idx] == guess[idx]) 
     { 
      //reveal character or word 
      condition = true; 
     } 
     else 
     { 
      misses = misses + 1; 
      condition = false; 
     } 
     return condition; 
    } 

} 

答えて

1

returnステートメントを実行すると、コントロールがメソッドから飛び去って呼び出し元に戻ります。

コードでは、returnはstatement forループ内に置かれます。 forループの繰り返しが実行されると、コントロールはメソッドからすぐに飛び出し、メソッドの呼び出し元に戻ります。

ご存じのように、forループのヘッダー(idx++)の最後の部分は、繰り返しの実行が完了すると実行されます。しかし、あなたのケースでは、制御がreturnに達したときに呼び出し元に戻るだけなので、繰り返しは決して終了しません。これが最初のエラーが発生した理由です。

戻り値の型としてvoidを持たないすべてのメソッドは、何であってもreturnである必要があります。

forループの条件(中間部分)が決してtrueにならない場合はどうなりますか? forループは決して実行されません。 forループが実行されない場合、メソッドは何を返すべきですか?

エラーは、forループが実行されないとメソッドが返されないため、すべてのコードパスが値を返すとは限りません。

は、この問題を解決するには、あなただけのforループの外にreturn声明を移動する必要があります。

static bool CheckGuess(char[] secrets, char[] mask, char[] letters, string guess) 
{ 
    int misses = 0; bool condition = false; 

    for (int idx = 0; idx < secret.Length; idx++) 
    { 
     guess.ToCharArray(); 
     if (mask[idx] == guess[idx]) 
     { 
      //reveal character or word 
      condition = true; 
     } 
     else 
     { 
      misses = misses + 1; 
      condition = false; 
     } 
    } 
    return condition; 
} 
+0

それはいつも私の小さなものですね。しかし、説明に感謝します。私はそれを知っていた - しかし、ばかげた理由のために、私はすでにforループの外に戻りステートメントを持っていると思った...ええ、休憩の時間。再度、感謝します! – Th1rt33nth

1

returnステートメントがあるので

このときforループに達すると、プログラムはループから飛び出し、i++に到達できなくなります。

+0

畜生!それはいつも何か小さいです!ガー!ありがとう - その両方の問題を修正...真剣に、ありがとう。今は非常に長い休憩の時間です。 – Th1rt33nth

関連する問題