找出猜测的数字是更高、更低还是等于随机数,或者之前猜测的等等

本文关键字:随机数 或者 数字 | 更新日期: 2023-09-27 18:25:49

我正在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
    }

我应该找出猜测是否过低、过高、正确的猜测、早期的猜测(从列表中检查),或者用户是否使用了所有尝试(检查常量)。我开始尝试,但我被卡住了!我的代码可能是错误的。

找出猜测的数字是更高、更低还是等于随机数,或者之前猜测的等等

将您的猜测存储在列表中

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语句将结束方法执行。

如果正确计算了随机数,则不需要进行错误处理。您不应该用错误处理来捕获编程错误;相反,请更正错误!当调用一个方法可能导致异常时,错误处理是有意义的。例如,打开一个可能不存在或可能被锁定的文件等。在其他人使用的库中,检查传递给方法的参数是否正确,如果不正确则抛出异常是有意义的。