我试图制作一个简单的奇数/偶数程序,但我想比较用户输入的数字。当我输入任何不是数字的符号时,我得到第二个例外,但是当我按下输入即。没有任何价值,我仍然得到第二个,除了第一个,当我不给任何价值时,我试图得到。我的问题是当我按下回车时如何获得第一个异常文本,因为现在我只得到第二个,无论我输入什么。
Console.WriteLine("Enter a number: ");
try
{
var number = int.Parse(Console.ReadLine());
if (number % 2 == 0)
Console.WriteLine($"Entered number {number} is even.");
else
Console.WriteLine($"Entered number {number} is odd.");
}
catch (ArgumentNullException)
{
Console.WriteLine("You need to enter some value.");
}
catch (Exception)
{
Console.WriteLine("You need to enter a number.");
}
答案 0 :(得分:2)
试试这个:
var str = Console.ReadLine();
if (string.IsNullOrEmpty(str))
{
Console.WriteLine("You need to enter some value.");
}
else
{
int number;
if (!int.TryParse(str, out number))
{
Console.WriteLine("You need to enter a number.");
}
else
{
if (number % 2 == 0)
Console.WriteLine($"Entered number {number} is even.");
else
Console.WriteLine($"Entered number {number} is odd.");
}
}
答案 1 :(得分:2)
您应该抓住FormatException
,以防您按下输入,因为string.Empty
传递给int.Parse
。仅当传递给ArgumentNullException
的输入值为int.Parse
时,才会引发null
。下面是如何执行此操作并根据输入值编写不同消息的示例:
Console.WriteLine("Enter a number: ");
string input = Console.ReadLine();
try
{
var number = int.Parse(input);
if (number % 2 == 0)
Console.WriteLine($"Entered number {number} is even.");
else
Console.WriteLine($"Entered number {number} is odd.");
}
catch (FormatException exc)
{
if(string.IsNullOrEmpty(input))
{
Console.WriteLine("You need to enter some value.");
}
else
{
Console.WriteLine("You need to enter a number.");
}
}
catch (Exception exc)
{
Console.WriteLine("You need to enter a number.");
}
答案 2 :(得分:0)
如果您没有输入任何值,则该值不是 null 而是“”(空字符串),这就是为什么它不是 ArgumentNullException
George Alexandria的建议
string s = Console.ReadLine();
if(s == "")
{ Console.WriteLine("You need
to enter some value."); }