【问题标题】:Find out if guessed number is higher, lower or equal to Random number, or guessed before etc找出猜测的数字是更高、更低或等于随机数,还是之前猜测等
【发布时间】:2012-02-23 22:44:44
【问题描述】:

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

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

【问题讨论】:

  • 这是作业吗?另外,您能否提出一个具体问题或描述具体问题是什么?
  • 什么是PreviousGuesses,它如何存储它们?
  • 不确定我是否完全理解之前的猜测。但除了之前的猜测之外,它似乎还不错。你能解释一下之前的猜测吗?例如,您是在与之比较还是只是显示?
  • 另外,空的foreach循环是怎么回事?
  • @HerrNilsson 所有问题都以?结尾

标签: c# asp.net


【解决方案1】:

将您的猜测存储在一个列表中

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多