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

时间:2018-10-17 16:21:06

标签: c# null integer

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

  

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

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

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

答案 2 :(得分:0)

首先,不要使用“转到”:

第二:检查数据并使用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);