我已经制作了一个显示您的出生日期的程序,它还会考虑闰年,因此如果您输入的年份是 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,那么为什么要这样做呢?我也愿意接受不同的方法来做到这一点,因为我觉得还有另一种方法 - 也许是数组?
最佳答案
尝试添加一些括号
if ((month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12) && day > 31)
如果没有括号,最后一个 && 仅指上个月。
你也可以使用 DateTime 构造函数,看看它是否抛出异常 ( http://msdn.microsoft.com/en-us/library/xcfzdy4x(v=vs.110).aspx ) 或使用 DateTime.TryParse。
关于c# - if 语句中的 And & Or 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20151194/