How to restrict the user input to five digits?

后端 未结 6 1256
生来不讨喜
生来不讨喜 2021-01-26 11:11

I\'m trying to restrict the user to only input 5 digits into the console for C#. I have my code error check the user, but for some reason after I type let\'s say...6 digits, the

相关标签:
6条回答
  • 2021-01-26 11:34

    You are accessing console multiple times. Check for length of your captured input - temp. Try this:

    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);
    
    0 讨论(0)
  • 2021-01-26 11:34

    dont use Console.Readline() again and again

    change your code like this.

        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());
    
                }
            }
    

    (to save from null reference you can do if(temp < 100000 && temp > 9999) also.)

    0 讨论(0)
  • 2021-01-26 11:36

    It can be done this way...

                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);
    
    0 讨论(0)
  • 2021-01-26 11:36

    Please view the code given below. I think this will fulfill your requirement. I have found that you have use address.zipCode which has not been declared anywhere in given code so I have replace the address.zipCode with 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;
    
            }
    

    Please let me know if you have any problem with the code.

    0 讨论(0)
  • 2021-01-26 11:41

    Modify your statements as

    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);
    

    done!

    0 讨论(0)
  • 2021-01-26 11:53

    I think you can use like this also.. if u want to check all the lengths.

    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());
        }
    }
    
    0 讨论(0)
提交回复
热议问题