2012-02-23 3 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, который выглядит следующим образом:

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

Я должен выяснить, если догадка слишком низко, слишком высоко, верно предположение, ранний MADE угадать (проверку из списка), или если пользователь использовал все попытки (проверка константы). Я начал пытаться, но я застрял! Мой код может быть неправильным.

+5

Это домашнее задание? Кроме того, можете ли вы задать конкретный вопрос или описать, что такое конкретная проблема? – JohnFx

+0

Что такое PreviousGuesses и как он хранит их? –

+0

Не уверен, что я полностью понимаю о предыдущем предположении. но, кроме предыдущего, кажется, что это хорошо. не могли бы вы объяснить больше о предыдущей догадки? например, вы сравниваете его или просто показываете? – AJP

ответ

3

Храните догадок в списке

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

После вызова MakeGuess(guess) добавить догадку в список

_guesses.Add(guess); 

Вместо петли foreach сделать это

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

else Последнее может быть упрощена с

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

к

else { 
    return Outcome.Low; 
} 

, так как это единственный возможный случай остальные.


Я бы упростить способ дополнительно

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 ключевое слово не нужно, потому что return заявления прекратить выполнение метода, если применяется случай.

Обработка ошибок не обязательно, если вы правильно вычисляете случайные числа. Вы не должны ловить программные ошибки при обработке ошибок; вместо этого исправьте ошибки! Обработка ошибок имеет смысл, когда вызов метода может привести к исключению. Примером является открытие файла, который может не существовать или может быть заблокирован или тому подобное. В библиотеках, используемых другими лицами, имеет смысл проверить правильность переданных параметров методу и исключить исключение.

Смежные вопросы