কম্পিউটার টিউটোরিয়াল

জাভা প্রোগ্রাম: লিপ ইয়ার (Leap Year) চেক করা

লিপ ইয়ার (Leap Year) কী?

লিপ ইয়ার হলো এমন একটি বছর যাতে ৩৬৫ দিনের বদলে ৩৬৬ দিন থাকে। ফেব্রুয়ারি মাসে ২৮ দিনের বদলে ২৯ দিন থাকে। এটি পৃথিবীর সৌর বছরের সাথে ক্যালেন্ডারইয়ারকে সিঙ্ক্রোনাইজ রাখার জন্য করা হয়।

লিপ ইয়ার নির্ণয়ের নিয়ম

  1. যদি বছর ৪ দিয়ে বিভাজ্য হয় → লিপ ইয়ার (সাধারণ নিয়ম)
  2. কিন্তু যদি বছর ১০০ দিয়ে বিভাজ্য হয় → লিপ ইয়ার নয় (এক্সেপশন)
  3. যদি বছর ৪০০ দিয়ে বিভাজ্য হয় → লিপ ইয়ার (এক্সেপশনের এক্সেপশন)

উদাহরণ:

  • ২০০০: ৪০০ দিয়ে বিভাজ্য → লিপ ইয়ার ✓
  • ১৯০০: ১০০ দিয়ে বিভাজ্য কিন্তু ৪০০ দিয়ে নয় → লিপ ইয়ার নড় ✗
  • ২০২৪: ৪ দিয়ে বিভাজ্য, ১০০ দিয়ে নয় → লিপ ইয়ার ✓
  • ২০২৩: ৪ দিয়ে বিভাজ্য নয় → লিপ ইয়ার নয় ✗

ইনপুট ও আউটপুট উদাহরণ

ইনপুট:

Enter a year: 2000

আউটপুট:

2000 is a Leap year

অ্যালগরিদম

  1. প্রোগ্রাম শুরু করুন
  2. একটি ইন্টিজার এবং একটি বুলিয়ান ভেরিয়েবল ঘোষণা করুন: my_input, isLeap
  3. ব্যবহারকারী থেকে বছর ইনপুট নিন
  4. নেস্টেড ইফ-এলস দিয়ে লিপ ইয়ার চেক করুন:
    • যদি ৪ দিয়ে বিভাজ্য হয়
    • তবে যদি ১০০ দিয়ে বিভাজ্য হয়
    • তবে যদি ৪০০ দিয়ে বিভাজ্য হয় → isLeap = true
    • অন্যথায় isLeap = false
    • অন্যথায় (১০০ দিয়ে বিভাজ্য নয়) → isLeap = true
    • অন্যথায় (৪ দিয়ে বিভাজ্য নয়) → isLeap = false
  5. ফলাফল প্রদর্শন করুন
  6. প্রোগ্রাম শেষ করুন

উদাহরণ ১: ব্যবহারকারী ইনপুট নেওয়া

import java.util.Scanner;

public class LeapYear {
    public static void main(String[] args) {
        int my_input;
        boolean isLeap = false;
        System.out.println("Required packages have been imported");
        Scanner my_scanner = new Scanner(System.in);
        System.out.println("A reader object has been defined");
        System.out.print("Enter the year : ");
        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 + " is a Leap year");
        else
            System.out.println(my_input + " is not a Leap year");
    }
}

উদাহরণ ২: পূর্বনির্ধারিত মান ব্যবহার

public class LeapYear {
    public static void main(String[] args) {
        int my_input = 2000;
        boolean isLeap = false;
        System.out.println("The year is defined as " + 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 + " is a Leap year");
        else
            System.out.println(my_input + " is not a Leap year");
    }
}

সরলীকৃত লজিক (One-liner)

boolean isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

Java 8+ Time API ব্যবহার করে

import java.time.Year;

public class LeapYearModern {
    public static void main(String[] args) {
        int year = 2000;
        boolean isLeap = Year.of(year).isLeap();
        System.out.println(year + (isLeap ? " is a Leap year" : " is not a Leap year"));
    }
}

লিপ ইয়ার কেন দরকার?

পৃথিবী সূর্যের চারদিকে ঘুরতে ৩৬৫.২৪২২ দিন নেয়। প্রতি বছর ০.২৪২২ দিন (≈ ৫ ঘণ্টা ৪৮ মিনিট) কম পড়ে। ৪ বছরে ≈ ১ দিন কম পড়ে, তাই ৪ বছরে একবার ১ দিন যোগ করা হয়। কিন্তু এটি একটু বেশি হয়, তাই শতাব্দী বছরে (১০০ দিয়ে বিভাজ্য) লিপ ইয়ার নয়। আবার ৪০০ বছরে একবার সংশোধন করা হয়।

টেস্ট কেস

বছর৪ দিয়ে বিভাজ্য১০০ দিয়ে বিভাজ্য৪০০ দিয়ে বিভাজ্যলিপ ইয়ার?
2000হ্যাঁহ্যাঁহ্যাঁহ্যাঁ ✓
1900হ্যাঁহ্যাঁনানা ✗
2024হ্যাঁনা-হ্যাঁ ✓
2023না--না ✗
  1. জাভাস্ক্রিপ্ট প্রোগ্রাম: লিপ ইয়ার (Leap Year) চেক করা

  2. স্ট্রিং-এ ক্যারেক্টার들의 অর্ডার চেক করার জাভা প্রোগ্রাম

  3. দেওয়া সংখ্যাটি ফিবোনাচি কিনা চেক করার জাভা প্রোগ্রাম

  4. জাভা প্রোগ্রাম: প্যালিনড্রোম চেক করা