闰年

闰年

简单

简介

闰年(在公历中)是这样出现的:

  • 每一年,只要年份能被 4 整除。
  • 除非年份能被 100 整除,这种情况下,只有年份同时也能被 400 整除时,它才是闰年。

一些例子:

  • 1997 年不是闰年,因为它不能被 4 整除。
  • 1900 年不是闰年,因为它不能被 400 整除。
  • 2000 年是闰年!
Note

想了解闰年这一现象的四分钟精彩讲解,请看这个 YouTube 视频。

说明

你的任务是判断给定年份是否为闰年。

实现

在开始之前,先确认你了解如何编写能通过测试用例的代码。 想了解更多背景信息,可以看看这篇教程。

大多数 Java 练习都包含多个测试用例。 这些用例的结构支持一种很有用的流程,叫做测试驱动开发(TDD)。 TDD 会重复一个有结构的循环,帮助程序员一步步地构建复杂功能,而不是一次性全部写完。 这个循环可以这样描述:

  1. 添加一个测试,用来描述你的代码目前还缺少的某一项功能。
  2. 运行测试,确认这个新添加的测试失败。
  3. 修改你现有的代码,直到:
    • 原来所有的测试仍然通过;
    • 新的测试也能通过。
  4. 整理你的代码,确保所有测试仍然通过。 这通常包括重命名变量、删除重复的逻辑片段、删除残留的日志输出等。
  5. 回到第 1 步,直到所有想要的功能都实现为止!

这个 track 里的测试文件包含你的解答必须通过、才能被判定为有效的_全部_测试。 这乍看之下和上面描述的循环并不兼容,因为上面是一步一步地写测试的。 不过,我们用来编写测试的工具 JUnit 提供了一个 @Disabled 注解,可以用来临时跳过已经写好的测试。 借助这个注解,我们可以确保交付给你的测试文件满足以下规则:

  • 任何测试文件中的第一个测试默认_不会_被跳过。
  • 任何测试文件中除第一个以外的测试默认_都会_被跳过。

这样你就可以按照下面这些稍作调整的步骤,来模拟 TDD 循环:

  1. 运行测试,确认当前_最多只有一个_测试失败。
  2. 修改你现有的代码,直到所有未被跳过的测试都通过。
  3. 整理你的代码,确保所有未被跳过的测试仍然通过。
  4. 删除测试文件中最上面那个 @Disabled 注解。
  5. 回到第 1 步,直到没有测试被跳过,并且所有测试都通过!
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Java Exercism

准备好开始 闰年 了吗?

注册 Exercism,借助 26 个概念158 个练习 和真人导师指导,学习并掌握 Java,全部免费。

深入探索 闰年!

深入了解可以用来解决闰年问题的各种算法和方法,Jeremy 和 Erik 会在 Exercism 上探索 10 种不同语言中有趣的社区解答。