首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查一个数字是否在范围内

检查一个数字是否在范围内
EN

Stack Overflow用户
提问于 2015-07-17 02:00:58
回答 1查看 1.4K关注 0票数 0

我试着用一个ints数组制作一个主谋游戏,我让用户猜一个4-10之间的数字序列,而不是颜色。我的GetAValidNumber应该向用户显示一个提示符,并在参数中指定的最小/最大范围内从用户那里获得一个数字。如果输入的数字超出了最小/最大范围,那么应该显示一条错误消息,并再次提示用户输入该数字,但由于某种原因,它没有正确验证。

如有任何指导,将不胜感激。

代码语言:javascript
运行
复制
    public static int GetAValidNumber(string inputMessage)
    {
        // declare variables
        int validInteger;
        bool inputIsValid = false;
        int lowValue = 1;
        int highValue = 10;
        while (!int.TryParse(Console.ReadLine(), out validInteger))
        {
            Console.WriteLine("Invalid entery - try again.");
            Console.Write(inputMessage, lowValue, highValue);
            do
            {
                while (!int.TryParse(Console.ReadLine(), out validInteger))
                {
                    Console.WriteLine("Invalid entery - try again.");
                    Console.Write(inputMessage);
                }
                if (validInteger < lowValue || validInteger > highValue)
                {
                    Console.WriteLine("Your number is out of Range: ");
                }
                else
                {
                    inputIsValid = true;
                }

            } while (validInteger < lowValue || validInteger > highValue);
        }
        return validInteger;
    }

    // This method directs the play of the game
    public static void PlayGame()
    {
        int userNumbers;
        int userGuess;
        int difficulty;
        int randomNumbers;

        Console.WriteLine("How Many Numbers Would You Like To Use When Playing(4-10): ");
        userNumbers = GetAValidNumber(Console.ReadLine());

        Console.WriteLine("Choose a difficulty level (1 -3");
        difficulty = GetAValidNumber(Console.ReadLine());
        Console.WriteLine("A 5-digit number has been chosen. Each possible digit may be the number 1, 2, 3, or 4");
        Console.ReadLine();
        Console.WriteLine("Enter Your Guess {0} guesses remaning", GetGameDifficulty(difficulty, randomNumbers = GetRandomNumberCount(difficulty)));
        userGuess = GetAValidNumber(Console.ReadLine());
        Console.WriteLine("Your Guess was {0}, Your Results are {1}", userGuess, CountHits(userGuess, randomNumbers));
        Console.ReadLine();

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-17 02:06:02

下面是代码的简化版本:

代码语言:javascript
运行
复制
    public static int GetAValidNumber(string inputMessage)
    {
        int validInteger = 0;

        //Range between 4 to 10
        int lowValue = 4; 
        int highValue = 10;

        int.TryParse(inputMessage, out validInteger);

        while (validInteger < lowValue || validInteger > highValue)
        {
            Console.WriteLine("Invalid entery - try again.");
            inputMessage = Console.ReadLine();
            int.TryParse(inputMessage, out validInteger);
        }
        return validInteger;

    }

这里的问题是,您有多个while循环,无法正确验证您的输入。

请注意,在其他验证数字输入时,需要不同的范围,因此我建议将lowValuehighValue设置为函数的额外参数:

代码语言:javascript
运行
复制
public static int GetAValidNumber(string inputMessage, int lowValue, int highValue)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31467332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档