【发布时间】:2013-11-22 17:44:05
【问题描述】:
我已经制作了一个显示您的出生日期的出生日期程序,它还会考虑闰年,因此如果您输入年份为 1995 年第 2 个月第 29 天,它会出现错误,因为它不是闰年。它还需要计算每个月有多少天,这就是我需要帮助的部分。目前是这样的:
if (month == 1 / && day > 31)
{
Console.WriteLine("January only has 31 days - Enter again");
validDay = false;
}
else if (day >= 29 && !IsLeapYear(year) && month == 2)
{
Console.WriteLine("You were not born on a leap year or February only has 28 days - Enter again");
validDay = false;
}
//And so on for each month
于是我就这样试了:
if (month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12 && day > 31)
{
Console.WriteLine("Your birth month only has 31 days - Enter again");
validDay = false;
}
else if (day >= 29 && !IsLeapYear(year) && month == 2)
{
Console.WriteLine("You were not born on a leap year or February only has 28 days - Enter again");
validDay = false;
}
else if (month == 3 || month == 6 || month == 9 || month == 11 && day > 30)
{
Console.WriteLine("Your birth month only has 30 days - Enter again");
validDay = false;
}
由于某种原因,即使您输入 1997、5、28,它也会始终抛出错误消息。在 5 中选择的月份但日期不是 > 31,那么为什么要这样做?我也对不同的方法持开放态度,因为我觉得还有另一种方法——也许是数组?
【问题讨论】:
-
因为您的
AND仅应用于最后一个OR。 -
谢谢大家,使用括号解决了这个问题。我也将其更改为使用日期时间,但我认为使用这种方式会从制作程序中获取乐趣。无论如何,仍然有新的两件事,所以再次感谢:)
-
你能正确处理世纪闰年吗?有一个DateTime.DaysInMonth method 会让这个丑陋的代码块消失(并解决隐藏在其中的错误)。
-
这工作:
This Works: public static bool IsLeapYear(int year) { if (year % 4 == 0 || year % 100 == 0 && year % 400 == 0) return true; else return false; }
标签: c# if-statement logical-operators