Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】うるう年を判定するプログラムの作り方をわかりやすく解説

この記事では、指定された年が「うるう年」かどうかを判定するJavaプログラムの作り方を解説します。判定は、その年が4・100・400で割り切れるかどうかを順番に確認することで行います。

うるう年とは、暦(カレンダー)と天文学上の1年(地球が太陽を一周する周期)とのずれを調整するために、通常より1日多い2月29日が設けられる年のことです。基本ルールとして「4で割り切れる年はうるう年」とされますが、ここに例外があります。100で割り切れる年はうるう年ではなく、さらに400で割り切れる年だけがうるう年として扱われます。

うるう年の判定条件

  • 4で割り切れ、かつ100で割り切れない年 → うるう年(例:2024年)
  • 100で割り切れるが、400で割り切れない年 → 平年(例:1900年)
  • 400で割り切れる年 → うるう年(例:2000年)

それでは、実際の実行例を見てみましょう。

入力

西暦を入力してください : 2000

出力

2000 年はうるう年です

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 整数型変数 my_input とブール型変数 isLeap を宣言する
ステップ3 - ユーザーから値を入力してもらう(または値を直接定義する)
ステップ4 - if-else文を使って、その年が4・100・400で割り切れるかどうかを判定する
ステップ5 - 判定結果を画面に表示する
ステップ6 - 処理を終了する

例1:ユーザーから入力を受け取る場合

ここでは、Scannerクラスを使ってユーザーが入力した値をもとに判定を行います。まず java.util パッケージをインポートし、入力読み取り用のオブジェクトを作成します。

import java.util.Scanner;
public class LeapYear {
   public static void main(String[] args) {
      int my_input;
      boolean isLeap = false;
      System.out.println("必要なパッケージをインポートしました");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("入力読み取り用のオブジェクトを作成しました");
      System.out.print("西暦を入力してください : ");
      my_input = my_scanner.nextInt();
      if (my_input % 4 == 0) {
         if (my_input % 100 == 0) {
            if (my_input % 400 == 0)
               isLeap = true;
            else
               isLeap = false;
         }
         else
            isLeap = true;
      }
      else
         isLeap = false;
      if (isLeap)
         System.out.println(my_input + " 年はうるう年です");
      else
         System.out.println(my_input + " 年はうるう年ではありません");
   }
}

出力

必要なパッケージをインポートしました
入力読み取り用のオブジェクトを作成しました
西暦を入力してください : 2000
2000 年はうるう年です

例2:あらかじめ値を定義しておく場合

こちらの例では、判定したい年をプログラム内で直接定義し、その値を使って判定結果をコンソールに表示します。

public class LeapYear {
    public static void main(String[] args) {
       int my_input = 2000;
       boolean isLeap = false;
       System.out.println("対象の年は " + my_input + " に設定されています");
       if (my_input % 4 == 0) {
          if (my_input % 100 == 0) {
             if (my_input % 400 == 0)
                isLeap = true;
             else
                isLeap = false;
          }
          else
             isLeap = true;
       }
       else
          isLeap = false;
       if (isLeap)
          System.out.println(my_input + " 年はうるう年です");
       else
          System.out.println(my_input + " 年はうるう年ではありません");
    }
 }

出力

対象の年は 2000 に設定されています
2000 年はうるう年です

まとめ

うるう年の判定は、「4」「100」「400」による剰余計算(%演算子)を組み合わせるだけでシンプルに実装できます。今回のようにif文を入れ子にして段階的に判定する方法以外にも、(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) のように1つの論理式にまとめて判定することも可能です。プログラムの可読性や用途に合わせて、実装方法を使い分けるとよいでしょう。

  1. JavaScriptで特定の年がうるう年かどうかを判定するプログラムの作成方法

    JavaScriptで特定の年がうるう年かどうかを確認する方法 JavaScriptである年がうるう年かどうかを判定するには、その年を「4」で割った余りが0になるかどうかを調べます。ここでは、ユーザーが入力した年をもとに、うるう年かどうかを判定するシンプルなプログラムを紹介します。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" conten

  2. Javaで回文を判定するプログラムの書き方【数値・文字列の実例付き】

    回文(パリンドローム)とは、逆から読んでも同じになる文字列や数値のことです。たとえば、121、313、525 といった数値や、「aba」「wow」のような文字列が回文に該当します。この記事では、Javaを使って回文を判定する方法を、数値の場合と文字列の場合の2つのパターンに分けて、サンプルコードと実行結果とともにわかりやすく解説します。回文数をチェックする方法数値が回文かどうかを判定するには、元の数値を1桁ずつ取り出して逆順に組み立て直し、元の値と比較します。具体的には、剰余演算(%10)で末尾の桁を取り出し、それを結果変数に10倍しながら加算していくことで反転した数値を作れます。サンプルコー