【问题标题】:How to ask the user to input numbers only in integer?如何要求用户只输入整数?
【发布时间】:2020-11-21 20:02:03
【问题描述】:

我想要求用户输入一个数字,包括一个 if 语句选项,如果他输入字母,最后一个问题将再次被问到 我已经尝试过了,但似乎它只适用于字符串

        Console.Write("Write a number:");
        int num = Convert.ToInt32(Console.ReadLine());

        if (!int.TryParse(age, out num))
            while(!int.TryParse(age, out num))
            {
             Console.WriteLine(...);
             // ....
            }

【问题讨论】:

    标签: c# if-statement integer


    【解决方案1】:

    让我们提取方法:我们将要求用户输入有效值,直到他或她提供它。所以我们有一个循环

       private static int ReadInteger(string question) {
         // Keep asking...
         while (true) {
           if (!string.IsNullOrWhiteSpace(question))
             Console.WriteLine(question);
    
           // ... until valid value provided
           if (int.TryParse(Console.ReadLine(), out int result))
             return result;
    
           Console.WriteLine($"Sorry, not a valid integer value; please, try again."); 
         }
       }
    

    那么你就可以把它当做

       int age = ReadInteger("Please, input age");
    

    【讨论】:

    • 感谢您的反馈
    • 如果某个答案有帮助,请记住将其标记为已接受,以免其他人尝试回答此问题。
    【解决方案2】:

    我在当前项目中使用的一个函数可能会对您有所帮助,它只是检查输入字符串是否仅包含数字:

    bool isDigitsOnly(string inputString)
    {
        foreach (char c in inputString)
        {
            if (c < '0' || c > '9')
                return false;
        }
        return true;
    }
    

    您可能需要对其进行一些修改以满足您的需要,但它应该足够好

    【讨论】:

    • 感谢您的反馈也对我有用
    • 这也将接受输入“12345678901234567890”,该输入太长而无法转换为int。而且它不会接受“-1”,这是一个完全有效的int
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2020-01-30
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多