C#闰年检查

时间:2017-09-25 11:43:19

标签: c#

我试图创建一个显示一个月内天数的程序,我需要增加闰年,所以我已经问过这一年和我尝试的方式弄清楚闰年是检查年份是否是4的倍数,它表示它不能取得给定表达式的地址"。这是我的代码:

 if (month == 2)
      Console.WriteLine("\nThere are 28 days in Febuary");

 if (month == 2) &(4%year);
      Console.WriteLine("\nThere are 29 days in Febuary this year as it is a leap year");

4 个答案:

答案 0 :(得分:5)

使用:

DateTime.IsLeapYear(year)

答案 1 :(得分:2)

您的第二个if的语法在这里完全不正确。首先,在if条件的末尾添加;意味着您在检查条件后什么都不做。其次,您使用& operator返回操作数的地址,导致您刚才遇到的错误。你想在这里使用&& operator。最后,只需将整个条件设置在同一对括号中即可。

另外,请务必检查闰年是什么。根据{{​​3}}:

  

每年可被4整除的是闰年,除了可以被100整除的年份,但如果它们可以被400整除,那么这些年份就是闰年。例如,1700年,1800年,而1900年并不是闰年,而是1600年和2000年。

最后,你纠正的是否会给出:

if (month == 2 && year % 4==0 && (year % 100 != 0 || year % 400 == 0))
    Console.WriteLine("\nThere are 29 days in Febuary this year as it is a leap year");

答案 2 :(得分:0)

您需要按如下方式更改代码:

if (month == 2 && DateTime.IsLeapYear(year))
    Console.WriteLine("\nThere are 29 days in Febuary this year as it is a leap year");
else if (month == 2)
    Console.WriteLine("\nThere are 28 days in Febuary");

改变了什么?

  • 在第二个if语句
  • 结尾处有一个分号
  • 将月份== 2移动为第二个if语句,因为如果月份为二月,它将始终输入第一个
  • 使用else if,否则它将同时输入if语句并记下两个语句

(添加了@waka和@TheSkimek的建议,谢谢!)

答案 3 :(得分:0)

确定闰年所需的正确代码是:

if (month == 2)
{
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    {
        Console.WriteLine("\nThere are 29 days in Febuary this year as it is a leap year");
    }
    else
    {
        Console.WriteLine("\nThere are 28 days in Febuary");
    }
}

闰年发生在可被4整除的年份,除非它们可被100整除,除非它们可以被400整除。