数字检查器是文本还是数字

时间:2018-12-21 22:27:58

标签: c# visual-studio console

我该如何制作一个程序来检查是否键入文本或数字。如果键入 给程序输入文本,直到您键入数字为止。有什么想法吗? 谢谢你。

5 个答案:

答案 0 :(得分:0)

有一个主要功能可解决您的问题

static void Main(string[] args)
{
    while (!Char.IsDigit(Console.ReadKey(true).KeyChar))
    {
        Console.WriteLine("enter number please!");
    }
}

您只需检查输入是否不是数字。我还为ReadKey()添加了真值,因此您的输入将不会显示在控制台上 编辑: 如果您需要一个数字而不是一个数字,则可以尝试

static void Main(string[] args)
    {
        while (Console.ReadLine().ToCharArray().Any(x => Char.IsLetter(x)))
        {
            Console.WriteLine("enter number please!");
        }
    }

答案 1 :(得分:0)

我将按以下方式使用int.TryParse(或double.TryParse-任意值):

    static void Main(string[] args)
    {
        var gotNumber = false;
        var parsedNumber = 0;
        while (!gotNumber)
        {
            Console.WriteLine("Please enter a number: ");
            var input = Console.ReadLine();
            if (int.TryParse(input, out parsedNumber)) // Or double.TryParse for a double - etc. 
            {
                gotNumber = true; 
            }
            else
            {
                Console.WriteLine("You entered an invalid number - please try again");
            }
        }

        Console.WriteLine($"You entered {parsedNumber}");
        Console.ReadLine();
    }

答案 2 :(得分:0)

我看到了您的标记控制台,但是如果您这样做是为了防止GUI中出现某人,那么您的方法可能是错误的。我认为,最好防止用户首先写非数字字符。

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        // Number only + allow to press enter, backspace and other needed keys. 
        // This does not allow letters or signs
        bool isKey = char.IsDigit(e.KeyChar);
        bool isControl = char.IsControl(e.KeyChar);
        if (!isKey & !isControl)
            e.Handled = true;
    }

在Designer.cs initializeComponent()表单上,您将需要以下内容:

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);

您可以创建一个函数并在任何文本框中使用它。

但是,如果控制台程序需要此,则:

Console.WriteLine("Enter a number.");
ConsoleKeyInfo myChar;

if (!Char.IsNumber(myChar.KeyChar))
{
 Console.WriteLine("Non-numeric input"); // Optional
}

答案 3 :(得分:0)

如果您定义了期望“看到”的内容,将会很有帮助。

  1. 输入应仅是数字输入吗?
  2. 用户可以在文本中键入数字(“我的输入是1234”)吗?
  3. 数字输入的格式是什么(int,实数,复数,科学计数法)?
  4. 可以签名吗?

无论哪种方式,我都会在用户输入整个输入之后检查字符串。我将使用正则表达式(Regex)进行检查。一旦您“掌握了窍门”,它们就非常简单,这里的人们可以帮助您编写正则表达式

答案 4 :(得分:0)

我会在While循环中使用TryParse函数。

如果字符串为Parseble,TryParse函数将返回“ true”,因此对您来说,保持循环继续进行也是必须的,以使布尔值取反。

static void Main(string[] args)
{
    bool isNumber;
    int number;

    Console.Write("Write a number:");

    while (!(isNumber = int.TryParse((Console.ReadLine().Trim()),out number)))
    {
        Console.Write("That's not a number, try again: ");
    }

    Console.WriteLine($"It's the number {number}");
}