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

【Java入門】今日が誕生日かどうかを判定して「お誕生日おめでとう」メッセージを表示する方法

本記事では、現在の日付と指定された誕生日を比較し、一致した場合に「お誕生日おめでとう」というメッセージを表示するJavaプログラムの作成方法を解説します。誕生日の判定は、「今日の日付」と「あらかじめ設定された誕生日(月・日)」を比較することで実現できます。

処理の流れ(入出力イメージ)

入力

たとえば、次のような値を設定します。

誕生日:7月15日

出力

期待される出力は以下のとおりです。

Today's Date is 20-12-2021
Today is not my birthday

アルゴリズム

ステップ1 - 開始
ステップ2 - 誕生日の月と日を格納する変数(month_of_birth、date_of_birth)を宣言する
ステップ3 - ユーザーから値を読み込む、または値を直接定義する
ステップ4 - LocalDate.now() メソッドを使って今日の日付を取得し、変数に保存する
ステップ5 - if文を使って、現在の月・日と入力された誕生日の月・日をそれぞれ比較する。一致すればtrueとなる
ステップ6 - 結果を画面に表示する
ステップ7 - 終了

例1:LocalDateクラスを使用する方法

まずは、java.timeパッケージに含まれるLocalDateクラスを使った現代的なアプローチです。現在の日付から日と月を取得し、事前に定義した誕生日と比較します。

import java.time.LocalDate;
import java.time.Month;
public class HappyBirthday {
    public static void main(String args[]) {
        int date_of_birth = 15;
        Month month_of_birth = Month.JULY;
        System.out.println("The required packages have been imported");
        LocalDate current_date = LocalDate.now();
        System.out.println("Today's Date is " + current_date);
        System.out.println("The birthday is defined as : " +date_of_birth + " " +month_of_birth);
        int date = current_date.getDayOfMonth();
        Month month = current_date.getMonth();
        if(date == date_of_birth && month == month_of_birth) {
            System.out.println("HAPPY BIRTHDAY TO YOU !!");
        } else {
            System.out.println("Your birthday is not today ");
        }
    }
}

出力結果

The required packages have been imported
Today's Date is 2022-02-09
The birthday is defined as : 15 JULY
Your birthday is not today

この例では、getDayOfMonth()メソッドで現在の「日」を、getMonth()メソッドで現在の「月」を取得しています。両方が誕生日の設定値と一致した場合のみ、バースデーメッセージが表示されます。

例2:SimpleDateFormatクラスを使用する方法

次に、日付文字列を解析して比較する従来型のアプローチです。SimpleDateFormatクラスを使い、「MM-dd」形式の日付同士をcompareTo()メソッドで比較します。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Birthday {
   public static void main(String[] args) throws ParseException {
      SimpleDateFormat s = new SimpleDateFormat("MM-dd");
      Date today = s.parse("10-15");
      Date my_birthday_date = s.parse("10-15");
      System.out.println("The birthday date is defined as October 15th" );
      if (today.compareTo(my_birthday_date) == 0) {
         System.out.println("Happy Birthday!!");
      } else {
         System.out.println("Today is not your birthday");
      }
   }
}

出力結果

The birthday date is defined as October 15th
Happy Birthday!!

この例では、同じ形式(MM-dd)でパースした2つの日付オブジェクトをcompareTo()で比較し、戻り値が0の場合(=完全に一致する場合)に誕生日メッセージを表示しています。なお、実際のアプリケーションでは「今日の日付」はnew Date()LocalDate.now()で取得するのが一般的です。

まとめ

誕生日の判定には、Java 8以降で推奨されているLocalDateクラスを使う方法がシンプルで安全です。一方、レガシーなコードベースではSimpleDateFormatDateクラスによる比較も依然として使われています。どちらの方法でも「月」と「日」が一致しているかを確認することがポイントです。

  1. 直方体の表面積と体積を求めるJavaプログラム

    この記事では、直方体の表面積と体積を計算するJavaプログラムの書き方について詳しく解説します。直方体とは、6つの長方形の面で構成される三次元の立体のことであり、各辺の長さ・幅・高さがそれぞれ異なる場合があります。立方体と直方体の違いは、立方体では長さ・高さ・幅がすべて等しいのに対し、直方体ではこれら3つの寸法が必ずしも同じではないという点です。直方体の表面積と体積の計算式直方体の表面積は、次の式で求めることができます。2*(縦 × 横 + 横 × 高さ + 高さ × 縦)直方体の体積は、次の式で求めることができます。縦 × 横 × 高さ以下に具体的な計算例を示します。入力Length = 6

  2. 【Python】日付の有効性を判定して翌日の日付を出力するプログラムの書き方

    入力された日付が有効かどうかを判定し、有効な日付であれば翌日の日付を出力したい場合、Pythonでは「if」条件文を使って実装できます。月末やうるう年といった特殊なケースも条件分岐で適切に処理することがポイントです。 以下に具体的な実装例を示します。 サンプルコード my_date = input(日付を入力してください : ) dd,mm,yy = my_date.split(/) dd=int(dd) mm=int(mm) yy=int(yy) if(mm==1 or mm==3 or mm==5 or mm==7 or mm==8 or mm==10 or mm==12):