我在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
}
我应该知道猜测是否太低,太高,正确猜测,早先猜测(从列表中检查),或者用户是否已经使用了所有尝试(检查常量)。我开始尝试但是我被卡住了!我的代码可能有误。
答案 0 :(得分: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
语句将结束方法执行。
如果正确计算随机数,则不需要进行错误处理。您不应该通过错误处理来捕获编程错误;相反,纠正错误!调用方法可能导致异常时,错误处理是有意义的。一个示例是打开可能不存在或可能被锁定的文件等。在其他人使用的库中,检查传递给方法的参数是否正确以及是否抛出异常是有意义的。