2012-02-23 8 views
-6

前に推測し、私はASP.NETでの推測番号を開発していますし、このメソッドにテキストボックスから推測番号を送信します。推測数は、高い低いかランダムな数と等しいかどうかを調べ、またはなど

public Outcome MakeGuess(int guess) 
    { 
     //Most of this code can be wrong 
     if (Number > 1 && Number < 100) 
     { 
      foreach (int number in PreviousGuesses) 
      { 

      } 
      if (Number == guess) 
      { 
       return Outcome.Correct; 
      } 
      else if (Number < guess) 
      { 
       return Outcome.High; 
      } 
      else if (Number > guess) 
      { 
       return Outcome.Low; 
      } 
     } 
     else 
     { 
      throw ArgumentOutOfRangeException; 
     } 

そして、このようになります列挙型があります:私は推測が低すぎるかどうかを調べる、高すぎる、右推測、(一覧からチェックを)先に作られたの推測、またはユーザーならばなければならない

enum Outcome 
    { 
     Indefinite, 
     Low, 
     High, 
     Correct, 
     NoMoreGuesses, 
     PreviousGuess 
    } 

をすべての試行(定数のチェック)を使用しています。私は試み始めたが、私は立ち往生している!私のコードは間違っているかもしれません。

+5

この宿題ですか?また、特定の質問をしたり、正確な問題が何であるかを説明したりできますか? – JohnFx

+0

PreviousGuessesとはどのようなものですか? –

+0

私は以前の推測について完全に理解しているかわかりません。以前の推測以外はそれは良いようです。以前の推測についてもっと説明していただけますか?あなたはそれと比較しているか、単に表示していますか? – AJP

答えて

3

ストアMakeGuess(guess)を呼び出した後、リスト

private List<int> _guesses = new List<int>(); 

であなたの推測はリスト

_guesses.Add(guess); 

代わりのforeachループに推測を追加し、この

if (_guesses.Contains(guess)) { 
    return outcome.PreviousGuess; 
} 

を行いますこれは、残りの唯一の可能なケースであるので、10

最後else

else { 
    return Outcome.Low; 
} 

else if (Number > guess) { 
    return Outcome.Low; 
} 

から簡略化することができます。ケースが適用される場合returnステートメントは、メソッドの実行を終了するので


私は

public Outcome MakeGuess(int guess) 
{ 
    if (_guesses.Contains(guess)) { 
     return outcome.PreviousGuess; 
    } 
    if (guess == Number) { 
     return Outcome.Correct; 
    } 
    if (guess > Number) { 
     return Outcome.High; 
    } 
    return Outcome.Low;    } 
} 

elseキーワード別の方法を単純化する必要はありません。

乱数を正しく計算する場合は、エラー処理は必要ありません。エラー処理でプログラミングエラーをトラップしないでください。代わりに、エラーを修正してください!エラー処理は、メソッドを呼び出すと例外が発生する可能性があります。たとえば、ファイルが存在しない、ロックされているなどの可能性があるファイルを開く場合があります。他の人が使っているライブラリでは、メソッドに渡されたパラメータが正しいかどうかをチェックし、そうでなければ例外をスローするのは意味があります。

関連する問題