【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つの論理式にまとめて判定することも可能です。プログラムの可読性や用途に合わせて、実装方法を使い分けるとよいでしょう。
-
JavaScriptで特定の年がうるう年かどうかを判定するプログラムの作成方法
JavaScriptで特定の年がうるう年かどうかを確認する方法 JavaScriptである年がうるう年かどうかを判定するには、その年を「4」で割った余りが0になるかどうかを調べます。ここでは、ユーザーが入力した年をもとに、うるう年かどうかを判定するシンプルなプログラムを紹介します。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" conten
-
Javaで回文を判定するプログラムの書き方【数値・文字列の実例付き】
回文(パリンドローム)とは、逆から読んでも同じになる文字列や数値のことです。たとえば、121、313、525 といった数値や、「aba」「wow」のような文字列が回文に該当します。この記事では、Javaを使って回文を判定する方法を、数値の場合と文字列の場合の2つのパターンに分けて、サンプルコードと実行結果とともにわかりやすく解説します。回文数をチェックする方法数値が回文かどうかを判定するには、元の数値を1桁ずつ取り出して逆順に組み立て直し、元の値と比較します。具体的には、剰余演算(%10)で末尾の桁を取り出し、それを結果変数に10倍しながら加算していくことで反転した数値を作れます。サンプルコー