如何限制控制台输入c#

时间:2015-05-31 01:20:26

标签: c# console int

我试图限制控制台的输入,以便在无效输入上添加错误消息。输入必须是9个数字(编辑:在100000000 - 999999999范围内)才能生效。我遇到的问题是正确显示错误以及让程序继续运行。程序设置为以整数形式使用sin。

int sin;
Console.Write("Please enter sin number: ");
sin = int.Parse(Console.ReadLine());

我尝试使用下面这个,但是在所有输入上都有无穷无尽的错误消息和无效输入

var digits = Console.ReadLine();
while (digits.Length > 9 || digits.Length < 9)
{
    Console.WriteLine("Error invalid entry");
}

如何让程序检查数字的长度,以及使用sin作为int值继续程序,以便程序的其余部分可以正常工作?

4 个答案:

答案 0 :(得分:1)

你需要再读一遍。 您只是在那里打印错误,但没有提示使用新的sin = int.Parse(Console.ReadLine());

来获取新输入

以下应该有效(编辑,欢呼为本)

int sin;
Console.Write("Please enter sin number: ");
string input = Console.ReadLine();
bool parse_ok=  int.TryParse(input,out sin);

while (!parse_ok || digits.Length != 9 || sin < 100000000 )
{
    Console.WriteLine("Error invalid entry");
    Console.Write("Please enter sin number: ");
    input = Console.ReadLine();  
    parse_ok=  int.TryParse(input,out sin);
}   ;

答案 1 :(得分:1)

您的Console.ReadLine()不在循环中,因此一旦您收到错误消息,用户就无法输入新值;错误消息只是在无限循环中显示。试试这个 - 一旦你因为输入良好而安全地退出循环,sin变量将具有SIN的整数值:

int sin = 0;
while (true) {
    String digits = Console.ReadLine();
    if (digits.Length == 9 && Int32.TryParse(digits, out sin)) {
        if (sin >= 100000000) {
            break;
        }
    }
    Console.WriteLine("Error invalid entry");
}

答案 2 :(得分:1)

您只需要进行一系列三项检查:

  1. 输入的长度为9
  2. 输入可以成功解析为整数int.TryParse(string, out int)
  3. 解析后的整数范围为100000000 - 999999999
  4. 有了这个,您可以尝试以下方法:

    已更新,其中包含错误消息

    using System;
    
    public class Program
    {
        public static void Main()
        {
            int sin = 0;
    
            Console.Write("Please enter sin number: ");
            string input = Console.ReadLine();
            while(input.Length != 9 ||
                  !int.TryParse(input, out sin) || 
                  sin < 100000000)
            {
                Console.WriteLine("Error invalid entry!");
                Console.WriteLine("");
    
                Console.Write("Please enter sin number: ");
                input = Console.ReadLine();
            }
    
            Console.WriteLine("Entered number: {0}", sin);
        }
    }
    

    结果:

    Please enter sin number: 012345678
    Error invalid entry!
    
    Please enter sin number: 0123456789
    Error invalid entry!
    
    Please enter sin number: asdf
    Error invalid entry!
    
    Please enter sin number: 999999999
    Entered number: 999999999
    

    请参阅此处的工作示例... https://dotnetfiddle.net/eHNy2O

答案 3 :(得分:0)

这应该有效

var digits = int.Parse(Console.ReadLine());

while (digits.Length > 9 || digits.Length < 9)
{
    Console.WriteLine("Error invalid entry");
    // then add something like this
    Console.Write("Enter a number: ");
    digits = int.Parse(Console.ReadLine());
}