Dan*_*ott 2 c# if-statement logical-operators
我已经制定了一个显示你的DoB的出生日期计划,它也会考虑到闰年,所以如果你输入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
Run Code Online (Sandbox Code Playgroud)
所以我接着尝试了这样:
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;
}
Run Code Online (Sandbox Code Playgroud)
并且由于某种原因,即使你输入1997,5,28,它也总会抛出错误信息.在5中选择的月份但是当天不是> 31,那为什么会这样做呢?我也开放了不同的方法来做到这一点因为我有一种感觉还有另一种方式 - 阵列可能吗?
小智 9
尝试添加一些括号
if ((month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12) && day > 31)
Run Code Online (Sandbox Code Playgroud)
没有parethesis,最后&&仅指上个月.
您还可以使用DateTime构造函数,看看它是否抛出异常(http://msdn.microsoft.com/en-us/library/xcfzdy4x(v=vs.110).aspx)或使用DateTime.TryParse.