トラック
/
Java
Java
/
演習
/
うるう年
うるう年

うるう年

初級

はじめに

うるう年(グレゴリオ暦におけるうるう年)は、次のような年です。

  • 4で割り切れる年。
  • ただし、100で割り切れる年は、400でも割り切れる場合に限りうるう年になります。

いくつか例を見てみましょう。

  • 1997年は4で割り切れないので、うるう年ではありませんでした。
  • 1900年は400で割り切れないので、うるう年ではありませんでした。
  • 2000年はうるう年でした!
Note

うるう年という現象の全体を4分で楽しく解説したこちらのYouTube動画も、ぜひ見てみてください。

説明

与えられた年がうるう年かどうかを判定することが課題です。

実装

始める前に、テストケースを通過できるコードの書き方を理解しておきましょう。詳しくは、こちらの[チュートリアル]を参照してください。

Javaの演習のほとんどには、複数のテストケースが含まれています。 これらのテストケースは、テスト駆動開発(TDD)と呼ばれる、役に立つプロセスを支えるように構成されています。 TDDでは、プログラマーが複雑な機能を一度にまとめて作るのではなく、少しずつ組み立てられるようにするための、決まったサイクルを繰り返します。 そのサイクルは、次のように説明できます。

  1. 今のコードに足りていない、望ましい機能の一部を表すテストを追加します。
  2. テストを実行して、今追加したテストが失敗することを確認します。
  3. 次の状態になるまで、既存のコードを更新します:
    • これまでのテストがすべて通り続けること。
    • 新しいテストも通ること。
  4. すべてのテストが通り続けることを確認しながら、コードを整理します。 通常は、変数の名前の変更、重複したロジックの削除、不要になったログの削除などを行います。
  5. 望ましい機能をすべて実装し終えるまで、ステップ1に戻ります!

このトラックのテストファイルには、解答が有効と見なされるために通すべきテストが_すべて_含まれています。 これは、テストを1つずつ書いていくという、上で説明したサイクルとは、すぐには両立しないように思えます。 しかし、テストを書くために使っているツールであるJUnitには、すでに書いたテストを一時的にスキップするための@Disabledというアノテーションがあります。 このアノテーションを使うことで、お届けするテストファイルが次のルールを満たすようにしています:

  • どのテストファイルでも、最初のテストはデフォルトで_スキップされません_。
  • どのテストファイルでも、最初のテスト以外はすべてデフォルトで_スキップされます_。

これにより、少し変更した次のステップで、TDDのサイクルをシミュレートできます:

  1. テストを実行して、現時点で失敗するテストが_多くても1つ_であることを確認します。
  2. スキップされていないテストがすべて通るまで、既存のコードを更新します。
  3. スキップされていないテストがすべて通り続けることを確認しながら、コードを整理します。
  4. テストファイルの中で一番上の@Disabledアノテーションを削除します。
  5. スキップされるテストがなくなり、すべてのテストが通るまで、ステップ1に戻ります!
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Java Exercism

うるう年を始める準備はできましたか?

Exercismに登録すれば、26個のコンセプト158個の演習、そして本物の人間によるメンタリングとともに、Javaを学んでマスターできます。すべて無料です。

うるう年を深く掘り下げよう!

Leapを解くのに使えるさまざまなアルゴリズムとアプローチを深掘りします。JeremyとErikが、Exercismの10の言語にわたる興味深いコミュニティの解答を見ていきます。