c# - if 语句中的 And & Or 运算符

标签 c# if-statement logical-operators

我已经制作了一个显示您的出生日期的程序,它还会考虑闰年,因此如果您输入的年份是 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/

相关文章:

swift - 在 "if"语句中使用字符串进行比较不起作用 (SWIFT)

r - R 中的 OR 表达式

c - 为什么 (true && true) 会引发错误,而 (1 && 1) 不会?

c# - 嵌入的图像显示为损坏

java - 如何检查 Java 中的 IF 语句中的方法是否返回 true 或 false?

javascript - 多条件语句 JavaScript

java - 简单语句中的BigInteger逻辑问题

c# - 为什么 ASP.NET 找不到我的文本框?

c# - window : how to make the panel scroll bar to be at the TOP position on loading the form

c# - 通过配置文件动态切换 WCF Web 服务引用 URL 路径