【问题标题】:Having trouble writing code that can calculate the leap year编写可以计算闰年的代码时遇到问题
【发布时间】:2020-01-05 06:17:04
【问题描述】:

方向: "能被 4 整除的年份是闰年。但能被 100 整除的年份,只有能被 400 整除的年份才是闰年。

创建一个程序来检查给定的年份是否是闰年。”我在计算部分遇到了最大的麻烦。这是我的代码:

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);

    int year;

    System.out.print("Type a year:");
    year=Integer.parseInt(reader.nextLine());

    if ((year%4==0)||(((year%100==year%400)))){

      System.out.println("The year a leap year.");
 }else       
       System.out.println("The year is not a leap year.");

}

我在运行代码时没有收到错误,但是,当我输入这样的日期,1600、1601 和 1700 等时,它说它不应该是闰年。我很迷茫,任何帮助将不胜感激

【问题讨论】:

标签: java operation leap-year


【解决方案1】:

试试这个:

(year % 4 == 0 && year % 100 != 0) || year % 400 == 0

【讨论】:

  • 谢谢,代码 100% 有效。您能否解释一下我做错了什么,导致我的代码无法正确打印。还有运算符“!”,我从来没有真正理解它的含义,你能解释一下“!”是怎么回事吗?在这种情况下有效吗?再次感谢你! :)
  • @AMCgiftcard 订单很重要。在您的情况下,您首先检查了 year 是否可被 4 整除(对于每个可被 100 整除的数字,始终为 true)。此外,检查year % 100 == year % 400 中的相等性不是一件好事,因为即使对于 1601 或 2003,它也会返回 true(因为除以 100 和 400 的余数相同)。在上面的代码中,它首先检查 year 是否能被 4 整除并且不能被 100 整除。这意味着我们只处理第一种情况(第二种是能被 100 整除的数字)。
  • 哦,好吧,这更有意义!再次感谢您!
猜你喜欢
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多