【发布时间】:2014-03-14 05:36:30
【问题描述】:
我很难找出我的代码有什么问题。我正在尝试在 C# 中创建一个控制台应用程序。该程序应该要求用户输入 3 个数字。所有的数字都必须大于 0。第一个数字应该是偶数,第二个应该是整数,第三个应该是奇数。我的语法似乎是正确的,但是,当我运行程序时,它似乎忽略了 if (userInput > 0) 部分。这是我的代码:
class Program
{
static void Main(string[] args)
{
try
{
int userInput;
Console.WriteLine("Please enter an even number.");
userInput = Convert.ToInt32(Console.ReadLine());
if (userInput > 0 && !isEven(userInput))
return;
Console.WriteLine("Please enter a whole number.");
userInput = Convert.ToInt32(Console.ReadLine());
if (userInput > 0)
Console.WriteLine("Please enter an odd number.");
userInput = Convert.ToInt32(Console.ReadLine());
if (userInput > 0 && isEven(userInput))
return;
Console.WriteLine("Congratulations!");
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
catch { }
}
static bool isEven(int value)
{
if (value % 2 == 0)
return true;
else
return false;
}
}
如果有人能告诉我如何正确测试这两种情况,我将永远感激不尽。谢谢。
【问题讨论】:
-
移除空的 catch 块。它只会隐藏有用的信息,您可以使用这些信息来找出程序崩溃的原因。
-
哦,好吧。谢谢你提供的信息。我通过删除空的 catch 块修改了我的代码,但我仍然遇到相同的逻辑错误。当我测试程序时,我为第一个提示输入了一个偶数。我还将该数字设为-2,以测试是否正确测试了大于 0 的条件。无论出于何种原因,它仍然被忽略。
-
有空捕获不是问题的原因。删除它并不能修复您的代码,它只是一种良好的编程习惯,可以防止您忽略其他问题。
-
我明白了。谢谢你的解释。我目前正在读计算机编程专业的第一年,所以我当然可以谦虚地说我还有很多东西要学。
标签: c# if-statement multiple-conditions