如何将用户输入限制为五位数?

时间:2014-01-16 09:59:23

标签: c# validation

我试图限制用户只在控制台中输入5位数字来进行C#。我有我的代码错误检查用户,但由于某种原因我输入后说... 6位数,控制台在while循环启动后停止。有人可以帮我弄清楚出了什么问题吗?提前谢谢!

Console.WriteLine("Enter the the zip code of the contact.");
temp = int.Parse(Console.ReadLine());

while (Console.ReadLine().Length != 5)
{
    Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
    temp = int.Parse(Console.ReadLine());

    if (Console.ReadLine().Length == 5)
    {
        temp = int.Parse(Console.ReadLine());
        address.zipCode = temp;
    }
}

6 个答案:

答案 0 :(得分:3)

您正在多次访问控制台。检查捕获的输入的长度 - temp。试试这个:

var temp = Console.ReadLine();
while (temp.Length > 5)
{
    Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
    temp = Console.ReadLine(); 
}

address.zipCode = int.Parse(temp);

答案 1 :(得分:2)

我想你也可以这样使用..如果你想检查所有的长度。

if (Console.ReadLine().Length == 5)
    {
        temp = int.Parse(Console.ReadLine());
        address.zipCode = temp;
    }
else{
while (Console.ReadLine().Length != 5)
{
    Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
    temp = int.Parse(Console.ReadLine());
    }
}

答案 2 :(得分:0)

可以这样做......

            Console.WriteLine("Enter the the zip code of the contact.");
            var temp = Console.ReadLine();
            string zipcode = string.Empty;
            while (temp.Length != 5)
            {
                Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
                if (temp.Length == 5)
                {
                    zipcode = temp;
                    break;
                }
                else
                {
                    temp = Console.ReadLine();
                }
            }
            Console.Write(zipcode);

答案 3 :(得分:0)

不要一次又一次地使用Console.Readline()

像这样更改你的代码。

    Console.WriteLine("Enter the the zip code of the contact.");
     var temp = int.Parse(Console.ReadLine());

        while (temp.ToString().Length != 5)
        {
            Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
            temp = int.Parse(Console.ReadLine());

            if (temp.ToString().Length == 5)
            {
                temp = int.Parse(Console.ReadLine());

            }
        }

(要从null引用中保存,你可以执行if(temp< 100000&& temp> 9999))。

答案 4 :(得分:0)

将您的陈述修改为

Console.WriteLine("Enter the the zip code of the contact.");

do
{
    temp = Console.ReadLine();
    if (temp.Length!=5)
    {
        Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
    }
    else
    {
        address.zipCode = temp;
    }
} while(temp.Length!=5);

完成!

答案 5 :(得分:0)

请查看下面给出的代码。我认为这将满足您的要求。我发现你使用了 address.zipCode ,但是在给定的代码中没有声明任何地方,所以我用 zipCode 替换了 address.zipCode

        int temp,zipCode;

        bool breakLoop = false;

        Console.WriteLine("Enter the the zip code of the contact.");

        while (breakLoop == false)
        {
            string userInput = Console.ReadLine();
            if (userInput.Length != 5)
            {
                Console.WriteLine("Error. Zip code is not 5 digits. Please enter a valid number.");
                continue;
            }

            int.TryParse(userInput, out temp);
            if (temp == 0)
            {
                Console.WriteLine("Error. Please enter a valid number.");
                continue;
            }                

            zipCode = temp;
            breakLoop = true;
            break;

        }

如果您对代码有任何问题,请与我们联系。