[英]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.