繁体   English   中英

如何使用户输入int空值C#

[英]how to make user input int null value c#

我正在尝试制作一个带有数字的程序并将其打印在屏幕上,但是如果用户按Enter键,则要求用户再次输入数字,但它显示了异常

Enter_No:
                 Console.WriteLine("enter number");
                 int? n = Convert.ToInt32(Console.ReadLine());
                 if (n == (int?)null)
                 {
                     goto Enter_No;
                 }
                 else
                 {
                     Console.WriteLine(n);
                 } 

使用int.TryParse

int? num = null;
while(!num.HasValue)
{
    Console.WriteLine("Please enter an integer:");
    num = int.TryParse(Console.ReadLine(), out int i) ? i : new int?();
}

Console.WriteLine("Entered integer: " + num.Value);

蒂姆的解决方案非常紧凑。 这就是您尝试失败的原因。

从MSDN上 ,如果满足以下条件,则Convert.ToInt32()会引发FormatException。

值不包含可选符号,后跟数字序列(0到9)。

首选方法是int.TryParse() ,因为如果无法解析整数而不是抛出异常,则它返回false。

尽管C#支持goto关键字,但在少数情况下(或取决于您询问的人),这是流控制的最佳选择。 Tim的while循环是一种极好的方法。

首先,不要使用转到:

第二:检查数据并使用tryparse:

        bool success = false;
        do
        {
            Console.WriteLine("enter number");
            var n = Console.ReadLine();
            if (n == null)
            {
                // goto Enter_No;
            }
            else
            {
                int typedNum;
                success = int.TryParse(n, out typedNum);
                Console.WriteLine(typedNum);                    
            }
        } while (!success);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM