閏年

閏年

簡單

簡介

閏年(在格里曆中)會發生在:

  • 每個能被 4 整除的年份。
  • 但若該年份能被 100 整除,就只有當它同時能被 400 整除時,才會是閏年。

來看幾個例子:

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

想用 4 分鐘輕鬆了解閏年的來龍去脈嗎?不妨看看這部 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 種不同語言的精彩社群解答。