【问题标题】:Java simple assignment [duplicate]Java简单赋值[重复]
【发布时间】:2017-05-30 03:15:16
【问题描述】:

我正在尝试解决我注册的课程中的一个简单作业,但由于某种原因它不起作用。

作业说:“如果一年能被 4 整除,那么它就是闰年。但如果一年能被 100 整除,那么只有当它也能被整除时,它才是闰年400。 创建一个检查给定年份是否为闰年的程序。"

当我运行代码时我收到消息:“输入 1604 你应该打印“年份是闰年”,但是你打印了“输入年份:年份是不是闰年。" "

这是我的代码:

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

    if((year % 4 == 0) && (year % 100 == 0 && year % 400 == 0)) {
        System.out.println("The year is a leap year.");
    }else {
        System.out.println("The year is not a leap year.");
    }
}

}

【问题讨论】:

  • 使用调试器查看year % 4year % 100year % 400的值。
  • 只是想想输入4会发生什么,是闰年,代码输出什么?不要从像 1604 这样的奇怪案例开始,从简单的案例开始,然后检查为什么它们已经失败了。
  • 你确定你的程序应该打印"Type a year: "吗?
  • 了解如何正确搜索。此链接是 Google 的第一次点击。
  • 谢谢大家的回答。我是一个完全的初学者,刚刚加入 SO,很抱歉重复的帖子。当然,我在之前发布的上一个问题中找到了我想要的内容。

标签: java


【解决方案1】:

if((year % 4 == 0) && (year % 100 == 0 && year % 400 == 0) 使用 && 它应该是 ||。应该是if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)

1604 可以被 4 整除,但由于您使用 &&,它还会检查它是否可以被 100 整除,以及是否不能被 400 整除。

【讨论】:

  • 应该在哪里||
  • 编辑了我的声明。
  • (year % 100 == 0 && year % 400 == 0) 是多余的,因为year % 100 == 0year % 400 == 0 时为真。这个整体情况会说 1900 年是闰年,但事实并非如此。所以,这是不正确的。
  • 是的,你是对的,它应该移动到第一个条件(year % 4 == 0 && year % 100 != 0)
  • 谢谢你们,我设法解决了这个问题。
猜你喜欢
  • 2018-05-13
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多