Scanner এবং Formatter Class

জাভা আইও (Java.io Package) - Java Technologies

363

Java.io প্যাকেজে Scanner এবং Formatter ক্লাসগুলি ইনপুট এবং আউটপুট ডেটা হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। এই দুটি ক্লাস আপনাকে ডেটা পড়া এবং ফরম্যাটেড আউটপুট লেখার সুবিধা প্রদান করে।


Scanner Class

Scanner ক্লাসটি Java-তে ইনপুট পড়ার জন্য ব্যবহৃত হয়, বিশেষ করে command-line input বা ফাইল থেকে ইনপুট পড়ার জন্য এটি খুবই কার্যকরী। এটি System.in (কমান্ড লাইনে ইনপুট) বা ফাইল থেকে টেক্সট ইনপুট পড়তে পারে।

Scanner Class এর বৈশিষ্ট্য:

  1. Text-based Input:
    • এটি text-based input সংগ্রহ করার জন্য ব্যবহৃত হয় এবং এটি বিভিন্ন ডেটা ধরনের ইনপুট যেমন String, int, double, boolean ইত্যাদি পড়তে সক্ষম।
  2. Delimiter Support:
    • আপনি custom delimiters ব্যবহার করে ইনপুট ভাগ করতে পারেন।
  3. Exception Handling:
    • Scanner ব্যবহার করার সময় InputMismatchException বা NoSuchElementException এর মত ব্যতিক্রম ঘটতে পারে, যেগুলোর হ্যান্ডলিং গুরুত্বপূর্ণ।

Scanner Class উদাহরণ (Command-line Input):

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter your name:");
        String name = scanner.nextLine();  // পুরো লাইন ইনপুট নেওয়া

        System.out.println("Enter your age:");
        int age = scanner.nextInt();  // একটি পূর্ণসংখ্যা ইনপুট নেওয়া

        System.out.println("Enter your height:");
        double height = scanner.nextDouble();  // একটি ডাবল ইনপুট নেওয়া

        System.out.println("Hello " + name + ", you are " + age + " years old and " + height + " meters tall.");

        scanner.close();  // Scanner বন্ধ করা
    }
}

ব্যাখ্যা:

  • nextLine() মেথড দিয়ে একটি পূর্ণ লাইন ইনপুট নেওয়া হচ্ছে।
  • nextInt() এবং nextDouble() মেথড দিয়ে সংখ্যা ইনপুট নেওয়া হচ্ছে।
  • ইনপুট নেওয়ার পর, তা আউটপুট হিসেবে প্রিন্ট করা হচ্ছে।

আউটপুট:

Enter your name:
John
Enter your age:
30
Enter your height:
1.75
Hello John, you are 30 years old and 1.75 meters tall.

Formatter Class

Formatter ক্লাস Java-তে formatted output প্রদান করার জন্য ব্যবহৃত হয়। এটি printf-style formatting সাপোর্ট করে এবং System.out বা ফাইলের মাধ্যমে আউটপুট লেখার সময় নির্দিষ্ট ফরম্যাটে ডেটা প্রদর্শন করতে সহায়ক।

Formatter Class এর বৈশিষ্ট্য:

  1. Formatted Output:
    • এটি String.format() এর মতো ফরম্যাটেড আউটপুট তৈরি করতে ব্যবহৃত হয়।
  2. Flexible Formatting:
    • Formatter ক্লাসটি বিভিন্ন ধরণের আউটপুট ফরম্যাট যেমন numeric formatting, padding, precision, ইত্যাদি সাপোর্ট করে।
  3. Supports Localization:
    • এটি স্থানীয়করণের (localization) জন্য ফরম্যাটিং সাপোর্ট করে।

Formatter Class উদাহরণ (Formatted Output):

import java.util.Formatter;

public class FormatterExample {
    public static void main(String[] args) {
        Formatter formatter = new Formatter();

        // Integer and String formatting
        formatter.format("Name: %s, Age: %d", "John", 30);
        System.out.println(formatter);

        // Floating point formatting
        formatter = new Formatter();
        formatter.format("Pi to 2 decimal places: %.2f", Math.PI);
        System.out.println(formatter);

        // Padding and alignment
        formatter = new Formatter();
        formatter.format("|%10s|%5d|", "Product", 100);
        System.out.println(formatter);

        formatter.close();  // Formatter বন্ধ করা
    }
}

ব্যাখ্যা:

  • %s দ্বারা String আউটপুট করা হচ্ছে।
  • %d দ্বারা Integer আউটপুট করা হচ্ছে।
  • %.2f দ্বারা Floating-point numbers ফরম্যাট করা হচ্ছে এবং দুই দশমিক স্থান পর্যন্ত প্রদর্শন করা হচ্ছে।
  • %10s এবং %5d দ্বারা প্যাডিং এবং আলাইনমেন্ট সেট করা হচ্ছে।

আউটপুট:

Name: John, Age: 30
Pi to 2 decimal places: 3.14
|Product   |  100|

Scanner এবং Formatter ক্লাসের মধ্যে পার্থক্য:

বিষয়Scanner ClassFormatter Class
কাজইনপুট গ্রহণ করে।আউটপুট ফরম্যাট করে।
ব্যবহারSystem.in, ফাইল বা স্ট্রিং থেকে ইনপুট পড়ে।স্ট্রিং, ফাইল বা কনসোলে ফরম্যাটেড আউটপুট প্রদান করে।
মূল উদ্দেশ্যব্যবহারকারীর ইনপুট নিয়ে প্রক্রিয়া করা।আউটপুট প্রদানের সময় নির্দিষ্ট ফরম্যাটে ডেটা প্রিন্ট করা।
মেথডnextLine(), nextInt(), nextDouble() ইত্যাদি।format(), printf() ইত্যাদি।

  • Scanner ক্লাসটি Java-তে ইনপুট পড়ার জন্য একটি শক্তিশালী এবং সহজ উপায়, যা text এবং numeric ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়।
  • Formatter ক্লাসটি formatted output তৈরি করার জন্য ব্যবহৃত হয়, যেখানে আপনি আউটপুটে numeric formatting, string padding, এবং precision control করতে পারেন।
  • উভয় ক্লাসই Java-র I/O অপারেশনকে আরও কার্যকর এবং সুবিধাজনক করে তোলে। Scanner ক্লাস ব্যবহার করে আপনি ইনপুট নিয়ে কাজ করতে পারেন, এবং Formatter ক্লাস ব্যবহার করে আপনি আউটপুটের ফরম্যাট সেট করতে পারেন।
Content added By

Scanner ক্লাসটি Java এর java.util প্যাকেজের অংশ, যা ব্যবহারকারীর ইনপুট টেক্সট ডেটা পড়া এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Scanner ক্লাসটি খুবই শক্তিশালী এবং বিভিন্ন ধরনের ইনপুট (যেমন স্ট্রিং, ইন্টিজার, ডেসিমাল নম্বর ইত্যাদি) গ্রহণ করতে সক্ষম। এটি keyboard input, files, এবং অন্যান্য সোর্স থেকে ইনপুট পড়তে ব্যবহৃত হতে পারে।

Scanner ক্লাসটি regular expressions ব্যবহার করে ডেটা প্রসেস করতে সক্ষম এবং এটি parse করার জন্য বিভিন্ন tokenizers প্রদান করে।

Scanner ক্লাসের সুবিধা:

  1. Flexible Input Handling:
    • Scanner ক্লাসটি বিভিন্ন ধরনের ইনপুট (যেমন: int, String, double, ইত্যাদি) গ্রহণ করতে সক্ষম।
  2. Text Processing:
    • এটি ইনপুট স্ট্রিংয়ের মধ্যে স্পেস, পাংকচুয়েশন এবং অন্যান্য চিহ্ন গুলি চিনতে পারে এবং regex (regular expressions) ব্যবহার করে ডেটা প্রসেস করতে পারে।
  3. File Reading:
    • এটি ফাইল থেকেও ইনপুট পড়তে সক্ষম এবং স্ট্রিং বা নম্বর হিসেবে ডেটা পড়তে পারে।
  4. Easy to Use:
    • Scanner ক্লাসটি ব্যবহার করা খুবই সহজ এবং এটি দ্রুত ডেটা প্রক্রিয়া করতে সক্ষম।

Scanner Class এর ব্যবহারের কিছু উদাহরণ

1. টেক্সট ইনপুট নেওয়া (স্ট্রিং ইনপুট):

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        // Scanner অবজেক্ট তৈরি করা
        Scanner scanner = new Scanner(System.in);

        // টেক্সট ইনপুট গ্রহণ
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();  // পুরো লাইন ইনপুট নেওয়া

        System.out.println("Hello, " + name + "!");
        
        // স্ক্যানার বন্ধ করা
        scanner.close();
    }
}

ব্যাখ্যা:

  • nextLine() মেথড ব্যবহার করে ব্যবহারকারীর পুরো লাইন ইনপুট নেওয়া হচ্ছে।
  • পরে সেই ইনপুটটি প্রিন্ট করা হচ্ছে।

আউটপুট:

Enter your name: John
Hello, John!

2. ইনপুট হিসেবে ইন্টিজার এবং ডেসিমাল সংখ্যা নেওয়া:

import java.util.Scanner;

public class IntegerAndDecimalInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // ইন্টিজার ইনপুট গ্রহণ
        System.out.print("Enter an integer: ");
        int integerValue = scanner.nextInt();

        // ডেসিমাল নম্বর ইনপুট গ্রহণ
        System.out.print("Enter a decimal number: ");
        double doubleValue = scanner.nextDouble();

        System.out.println("You entered integer: " + integerValue);
        System.out.println("You entered decimal: " + doubleValue);

        scanner.close();
    }
}

ব্যাখ্যা:

  • nextInt() মেথড ব্যবহার করে integer ইনপুট নেওয়া হচ্ছে।
  • nextDouble() মেথড ব্যবহার করে decimal (double) নম্বর ইনপুট নেওয়া হচ্ছে।

আউটপুট:

Enter an integer: 25
Enter a decimal number: 12.5
You entered integer: 25
You entered decimal: 12.5

3. ফাইল থেকে ইনপুট নেওয়া:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FileInputExample {
    public static void main(String[] args) {
        // ফাইল থেকে ইনপুট নেওয়া
        try {
            File file = new File("input.txt");
            Scanner scanner = new Scanner(file);

            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                System.out.println(line);  // প্রতিটি লাইন প্রিন্ট করা হচ্ছে
            }

            scanner.close();
        } catch (FileNotFoundException e) {
            System.out.println("File not found.");
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Scanner ক্লাসটি ফাইল থেকে ইনপুট নিতে সক্ষম।
  • hasNextLine() মেথডের মাধ্যমে ফাইলের প্রতিটি লাইন পড়া হচ্ছে।

আউটপুট (যদি input.txt ফাইলে কিছু ডেটা থাকে):

This is the first line.
This is the second line.

Scanner Class এর প্রধান মেথডসমূহ:

মেথডবর্ণনা
next()পরবর্তী শব্দ (token) ইনপুট নেয়।
nextLine()পুরো লাইন ইনপুট নেয়।
nextInt()একটি পূর্ণসংখ্যা (integer) ইনপুট নেয়।
nextDouble()একটি ডেসিমাল নম্বর (double) ইনপুট নেয়।
nextBoolean()একটি বুলিয়ান মান (true বা false) ইনপুট নেয়।
hasNext()পরবর্তী ইনপুট উপলব্ধ আছে কিনা তা চেক করে।
hasNextLine()পরবর্তী লাইন উপলব্ধ আছে কিনা তা চেক করে।
close()স্ক্যানার বন্ধ করে।

Scanner Class এর সুবিধা:

  1. User-friendly Input:
    • Scanner ক্লাস ব্যবহারকারী থেকে সহজে ইনপুট নিতে সক্ষম এবং ইনপুট ডেটা প্রক্রিয়া করার জন্য অনেক সুবিধা প্রদান করে।
  2. Multiple Data Types Support:
    • এটি String, int, double, boolean সহ বিভিন্ন ধরনের ডেটা ইনপুট নেয়ার জন্য উপযুক্ত।
  3. Regular Expressions:
    • Scanner ক্লাস regular expressions ব্যবহার করে ইনপুট ডেটাকে সহজেই প্রক্রিয়া করতে সক্ষম।
  4. File and Console Input:
    • Scanner ক্লাস কনসোলের ইনপুটের পাশাপাশি ফাইল থেকেও ডেটা পড়তে সক্ষম।

Scanner Class এর সীমাবদ্ধতা:

  1. No Support for Object Serialization:
    • Scanner ক্লাসটি শুধুমাত্র primitive data types এবং strings পড়ে। এটি অবজেক্টের serialization বা deserialization এর জন্য উপযুক্ত নয়।
  2. Blocking Input:
    • Scanner ক্লাস ইনপুট গ্রহণ করার সময় blocking ভাবে কাজ করে, অর্থাৎ এটি ব্যবহারকারীর ইনপুটের জন্য অপেক্ষা করে। এটি কিছু অ্যাপ্লিকেশনে সমস্যা সৃষ্টি করতে পারে যেখানে non-blocking বা asynchronous ইনপুট প্রয়োজন।
  3. Resource Management:
    • Scanner ক্লাস ব্যবহারের পরে close() মেথড কল করা গুরুত্বপূর্ণ, যাতে ব্যবহৃত রিসোর্স সঠিকভাবে বন্ধ হয়। এটি মেমরি লিক বা রিসোর্স রিলিজ সমস্যা এড়াতে সাহায্য করে।

  • Scanner ক্লাস Java-তে টেক্সট ডেটা ইনপুট এবং প্রক্রিয়াকরণের জন্য একটি অত্যন্ত শক্তিশালী এবং সহজ ব্যবহারযোগ্য ক্লাস।
  • এটি keyboard input, files এবং অন্যান্য সোর্স থেকে ইনপুট পড়তে সহায়ক এবং regular expressions এর মাধ্যমে ডেটা প্রক্রিয়া করতে সক্ষম।
  • next(), nextLine(), nextInt(), nextDouble() ইত্যাদি মেথডগুলি ইনপুট গ্রহণের জন্য ব্যবহৃত হয়, এবং এগুলি খুবই কার্যকরী ও ব্যবহারযোগ্য।

এটি কনসোল বা ফাইল থেকে ইনপুট পড়ার জন্য একটি প্রধান পছন্দ এবং Java অ্যাপ্লিকেশনগুলিতে বিভিন্ন ধরনের ডেটা ইনপুট এবং প্রক্রিয়াকরণ করতে সহজ উপায় প্রদান করে।

Content added By

Java-তে formatted output তৈরি করার জন্য Formatter ক্লাস ব্যবহার করা হয়। এটি Java I/O প্যাকেজের অংশ এবং PrintStream বা PrintWriter এর মতো আউটপুট স্ট্রীমে ডেটা formatted (যেমন সংখ্যা, তারিখ, স্ট্রিং ইত্যাদি) আকারে আউটপুট করার জন্য ব্যবহৃত হয়।

Formatter ক্লাসের মাধ্যমে আপনি ডেটাকে নির্দিষ্ট ফরম্যাটে আউটপুট করতে পারেন। এটি একটি stream-based আউটপুট মেথড যা String.format() অথবা System.out.printf() এর মতো মেথডের ভিত্তিতে কাজ করে।

Formatter Class এর বৈশিষ্ট্য:

  1. Formatted Output:
    • Formatter ক্লাস ডেটাকে নির্দিষ্ট ফরম্যাটে আউটপুট করে, যেমন: দশমিক সংখ্যা, তারিখ, স্ট্রিং ইত্যাদি।
  2. Placeholder Syntax:
    • Formatter ক্লাসে placeholders (%) ব্যবহার করা হয়, যা আউটপুটের জন্য নির্দিষ্ট ফরম্যাট নির্ধারণ করে। যেমন %d দিয়ে পূর্ণসংখ্যা, %f দিয়ে দশমিক সংখ্যা ইত্যাদি।
  3. Locale-Specific Formatting:
    • Formatter ক্লাসের মাধ্যমে বিভিন্ন locale অনুযায়ী ফরম্যাটিং করা যেতে পারে, যেমন ইংরেজি, ফরাসি, জাপানি ইত্যাদি।
  4. Width, Precision, and Alignment:
    • আপনি আউটপুটে width, precision, এবং alignment কাস্টমাইজ করতে পারেন, যেমন একটি নির্দিষ্ট প্রস্থে ডেটা প্রদর্শন করা।

Formatter Class এর সাধারণ ব্যবহার:

Formatter ক্লাসের প্রধান মেথডগুলির মধ্যে format(), printf(), এবং toString() অন্যতম।

Formatter Class এর প্রধান মেথডসমূহ:

মেথডবর্ণনা
format(String format, Object... args)ফরম্যাটেড আউটপুট তৈরি করে।
printf(String format, Object... args)System.out.printf() এর মতো আউটপুট প্রদর্শন করে।
toString()আউটপুটকে স্ট্রিং আকারে রিটার্ন করে।

Formatter Class এর উদাহরণ:

1. সাধারণ Formatter ব্যবহার

import java.util.Formatter;

public class FormatterExample {
    public static void main(String[] args) {
        // Formatter অবজেক্ট তৈরি করা
        Formatter formatter = new Formatter();

        // ফরম্যাটেড আউটপুট
        formatter.format("Name: %s, Age: %d, Height: %.2f meters", "John", 30, 1.75);

        // আউটপুট দেখানো
        System.out.println(formatter.toString());

        // Formatter বন্ধ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • format() মেথডে %s, %d, এবং %.2f প্লেসহোল্ডার ব্যবহার করা হয়েছে।
    • %s: স্ট্রিং ইনপুট (নাম),
    • %d: পূর্ণসংখ্যা ইনপুট (বয়স),
    • %.2f: দশমিক ইনপুট (উচ্চতা) যেটি দুই দশমিক পর্যন্ত প্রদর্শিত হবে।

আউটপুট:

Name: John, Age: 30, Height: 1.75 meters

2. Formatter ব্যবহার করে বিভিন্ন সংখ্যা ফরম্যাটিং

import java.util.Formatter;

public class NumberFormattingExample {
    public static void main(String[] args) {
        // Formatter অবজেক্ট তৈরি করা
        Formatter formatter = new Formatter();

        // ফরম্যাটেড আউটপুট
        formatter.format("Integer: %d, Floating Point: %.2f, Hexadecimal: %x", 100, 3.14159, 255);

        // আউটপুট দেখানো
        System.out.println(formatter.toString());

        // Formatter বন্ধ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • %d: পূর্ণসংখ্যা (যেমন 100),
  • %.2f: দশমিক সংখ্যা, দুই দশমিক স্থান (যেমন 3.14),
  • %x: হেক্সাডেসিমেল ফরম্যাটে সংখ্যা (যেমন 255 কে ff হিসাবে দেখাবে)।

আউটপুট:

Integer: 100, Floating Point: 3.14, Hexadecimal: ff

3. Formatter ব্যবহার করে Alignment এবং Width

import java.util.Formatter;

public class AlignmentExample {
    public static void main(String[] args) {
        // Formatter অবজেক্ট তৈরি করা
        Formatter formatter = new Formatter();

        // ফরম্যাটেড আউটপুট উইথ এলাইনমেন্ট এবং প্রস্থ
        formatter.format("|%-10s|%10d|", "Apple", 30);   // Left align text and right align number

        // আউটপুট দেখানো
        System.out.println(formatter.toString());

        // Formatter বন্ধ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • %-10s: স্ট্রিংটি 10 অক্ষরের প্রস্থে বাম দিকে এলাইন করা হয়েছে।
  • %10d: পূর্ণসংখ্যা 10 অক্ষরের প্রস্থে ডান দিকে এলাইন করা হয়েছে।

আউটপুট:

|Apple     |        30|

Formatter Class এর সুবিধা:

  1. Flexible Formatting:
    • Formatter ক্লাস বিভিন্ন ধরনের ডেটার জন্য ফরম্যাটিং সুবিধা প্রদান করে, যেমন স্ট্রিং, পূর্ণসংখ্যা, দশমিক সংখ্যা, তারিখ ইত্যাদি।
  2. Locale-Specific Formatting:
    • এটি locale-specific formatting সমর্থন করে, যার ফলে আপনি বিভিন্ন দেশের ফরম্যাটে ডেটা প্রদর্শন করতে পারেন। যেমন ইংরেজি, ফরাসি, জাপানি ইত্যাদি।
  3. Alignment, Precision, and Width:
    • Formatter ক্লাস আপনাকে ফরম্যাটিং এর জন্য alignment, width, এবং precision কাস্টমাইজ করার সুযোগ দেয়, যা আউটপুটকে আরও সুন্দর এবং সুগম করে তোলে।
  4. Consistent Output:
    • এটি বিভিন্ন ডেটা টাইপের জন্য একটি একক, প্রাঞ্জল ফরম্যাট প্রদান করে, যা কোডের মান বজায় রাখে।

Formatter Class এর সীমাবদ্ধতা:

  1. Only Text-Based Output:
    • Formatter ক্লাস কেবলমাত্র text-based output ফরম্যাট করতে সক্ষম। এটি binary data ফরম্যাটিং এর জন্য উপযুক্ত নয়।
  2. Complex Formatting:
    • বেশ কিছু ক্ষেত্রে, ফরম্যাটিং খুব বেশি জটিল হলে কোডটি complex হয়ে যেতে পারে, বিশেষত যখন অনেক ধরনের ফরম্যাটিং একসাথে করতে হয়।

  • Formatter ক্লাস Java I/O প্যাকেজে ফরম্যাটেড আউটপুট তৈরির জন্য একটি গুরুত্বপূর্ণ ক্লাস।
  • এটি বিভিন্ন text-based data ফরম্যাট করার জন্য অত্যন্ত কার্যকরী এবং এটি ব্যবহার করে precision, width, alignment, locale-specific formatting ইত্যাদি কাস্টমাইজ করা যায়।
  • Formatter Java-তে formatted output তৈরির জন্য একটি সোজা এবং কার্যকরী উপায়, যা console output, file writing, report generation ইত্যাদির জন্য ব্যবহৃত হতে পারে।
Content added By

Formatter ক্লাস Java I/O প্যাকেজের একটি ক্লাস, যা ফরম্যাটেড আউটপুট তৈরি করার জন্য ব্যবহৃত হয়। এই ক্লাসটি প্রোগ্রামারদেরকে বিভিন্ন ধরনের ডেটা যেমন integers, floating point numbers, strings, ইত্যাদি নির্দিষ্ট ফরম্যাটে প্রিন্ট করার ক্ষমতা প্রদান করে। এটি C-এর printf ফাংশনের মতো কাজ করে এবং আপনাকে কাস্টম ফরম্যাটিং, সঠিক স্পেসিং এবং ফিলিং, প্রিসিশন নিয়ন্ত্রণ করার সুবিধা দেয়।

Formatter Class এর ব্যবহার:

Formatter ক্লাসটি সাধারণত আউটপুট স্ট্রিম যেমন Console, Files, বা String-এ ফরম্যাটেড ডেটা লেখার জন্য ব্যবহৃত হয়।

Formatter Class এর প্রধান বৈশিষ্ট্য:

  1. Format Specifiers:
    • %d, %s, %f ইত্যাদি স্পেসিফায়ার ব্যবহার করে আউটপুট ফরম্যাট করা যায়। উদাহরণস্বরূপ, %d ব্যবহার করে পূর্ণসংখ্যা এবং %s ব্যবহার করে স্ট্রিং আউটপুট করা যায়।
  2. Alignment and Padding:
    • Formatter ক্লাসের মাধ্যমে ডেটা সঠিকভাবে alignment এবং padding করা যায়। যেমন, right-align বা left-align করা, এবং নির্দিষ্ট সংখ্যক স্থান ফাঁকা রাখা।
  3. Precision:
    • ফ্লোটিং পয়েন্ট সংখ্যা এবং ডেটার প্রিসিশন নির্ধারণ করা যায়।
  4. Locale-Specific Formatting:
    • এটি বিভিন্ন locales অনুসারে ডেটা ফরম্যাট করতে পারে, যেমন currency, date, ইত্যাদি।

Formatter Class এর Syntax:

public class Formatter {
    public Formatter(String fileName);
    public Formatter(OutputStream out);
    public Formatter(Writer out);
    public String format(String format, Object... args);
    public void close();
}
  • format(String format, Object... args): এই মেথডটি একটি ফরম্যাট স্ট্রিং নেয় এবং এর মাধ্যমে আর্গুমেন্টগুলিকে ফরম্যাট করে।
  • close(): এটি Formatter ক্লাসের resources বন্ধ করার জন্য ব্যবহৃত হয়।

Formatter Class এর ফরম্যাট স্পেসিফায়ার:

  • %d: পূর্ণসংখ্যা (integer) প্রিন্ট করতে ব্যবহৃত হয়।
  • %s: স্ট্রিং (string) প্রিন্ট করতে ব্যবহৃত হয়।
  • %f: ভগ্নাংশ (floating point) সংখ্যা প্রিন্ট করতে ব্যবহৃত হয়।
  • %x: হেক্সাডেসিমাল (hexadecimal) সংখ্যা প্রিন্ট করতে ব্যবহৃত হয়।
  • %c: চর (character) প্রিন্ট করতে ব্যবহৃত হয়।
  • %e: সায়েন্টিফিক নোটেশন (scientific notation) প্রিন্ট করতে ব্যবহৃত হয়।

Formatter Class ব্যবহার করে Formatted Output উদাহরণ:

উদাহরণ 1: Integer, String, এবং Floating Point সংখ্যা ফরম্যাট করা

import java.util.Formatter;

public class FormatterExample {
    public static void main(String[] args) {
        Formatter formatter = new Formatter();

        // Integer, String, and Floating Point Numbers
        int age = 25;
        String name = "Alice";
        float balance = 1234.5678f;

        // Formatting the output
        formatter.format("Name: %s\nAge: %d\nBalance: %.2f", name, age, balance);

        // Output the formatted string
        System.out.println(formatter);
        
        // Close the formatter
        formatter.close();
    }
}

ব্যাখ্যা:

  • %s ব্যবহার করে String ফরম্যাট করা হয়েছে।
  • %d ব্যবহার করে integer ফরম্যাট করা হয়েছে।
  • %.2f ব্যবহার করে floating-point সংখ্যাটির প্রিসিশন ২ দশমিক পর্যন্ত ফরম্যাট করা হয়েছে।
  • formatter.format() মেথডটি আর্গুমেন্টগুলি নিয়ে একটি ফরম্যাট স্ট্রিং তৈরি করে।

আউটপুট:

Name: Alice
Age: 25
Balance: 1234.57

উদাহরণ 2: Number Alignment এবং Padding

import java.util.Formatter;

public class FormatterAlignmentExample {
    public static void main(String[] args) {
        Formatter formatter = new Formatter();

        // Integer and Floating-point numbers with padding
        int value1 = 123;
        int value2 = 4567;
        double value3 = 89.12;

        // Formatting with alignment and padding
        formatter.format("|%-10d|%10d|%10.2f|", value1, value2, value3);

        // Output the formatted string
        System.out.println(formatter);
        
        // Close the formatter
        formatter.close();
    }
}

ব্যাখ্যা:

  • %-10d: সংখ্যাটি left-aligned এবং 10 স্থানে প্রদর্শিত হবে, বাকি স্থানে স্পেস থাকবে।
  • %10d: সংখ্যাটি right-aligned এবং 10 স্থানে প্রদর্শিত হবে।
  • %10.2f: ভগ্নাংশ সংখ্যাটি ১০ স্থান চওড়া হবে এবং ২ দশমিক স্থান থাকবে।

আউটপুট:

|123       |      4567|      89.12|

উদাহরণ 3: Locale-Specific Formatting (Currency Format)

import java.util.*;

public class LocaleFormatterExample {
    public static void main(String[] args) {
        Formatter formatter = new Formatter();
        
        // Locale-specific currency formatting
        double amount = 12345.67;

        // Format currency for the default locale
        formatter.format("Amount: %,.2f", amount);
        
        // Output the formatted currency
        System.out.println(formatter);
        
        // Close the formatter
        formatter.close();
    }
}

ব্যাখ্যা:

  • %,.2f: এটি একটি সংখ্যাকে comma-separated এবং 2 decimal places সহ ফরম্যাট করে।
  • এটি default locale অনুসারে সংখ্যা ফরম্যাট করে, যেমন USA-তে $12,345.67 দেখাবে।

আউটপুট:

Amount: 12,345.67

Formatter Class এর সুবিধা:

  1. Flexibility in Output:
    • আপনি text, numeric values, এবং floating point numbers সহ complex formatting করতে পারেন।
  2. Locale-Specific Formatting:
    • এটি currency, numbers, এবং dates সহ অন্যান্য লজিক্যাল ফরম্যাটকে স্থানীয় ভাষা বা স্থানীয় মুদ্রা অনুযায়ী ফরম্যাট করতে সক্ষম।
  3. Control Over Precision:
    • আপনি floating point numbers এর precision নিয়ন্ত্রণ করতে পারেন, যেমন %.2f
  4. Alignment and Padding:
    • numbers এবং strings এর alignment এবং padding নিয়ন্ত্রণ করতে সক্ষম।

Formatter Class এর সীমাবদ্ধতা:

  1. StringBuilder ব্যবহার:
    • Formatter ফরম্যাটিংয়ের জন্য StringBuilder এর মতো ক্লাসের মতো mutable objects ব্যবহার করে, যা কিছু ক্ষেত্রে অতিরিক্ত মেমরি ব্যবহার করতে পারে।
  2. No Formatting for Objects:
    • এটি শুধুমাত্র primitive types এবং strings এর জন্য ফরম্যাটিং করতে উপযুক্ত, তবে আপনি অবজেক্টের জন্য custom formatting করতে toString() মেথড ব্যবহার করতে পারেন।

  • Formatter ক্লাস Java I/O প্যাকেজের একটি শক্তিশালী টুল যা formatted output তৈরি করতে ব্যবহৃত হয়।
  • এটি numeric values, strings, এবং floating point numbers সহ complex formatting এর জন্য উপযোগী।
  • Alignment, padding, precision control, এবং locale-specific formatting সহ এটি আউটপুট ফরম্যাটিংয়ে উচ্চ মানের নিয়ন্ত্রণ প্রদান করে।
  • এটি console applications, file writing, এবং UI applications-এ ডেটা সুন্দরভাবে এবং পঠিতযোগ্য আউটপুট প্রদানের জন্য খুবই উপকারী।
Content added By
Promotion

Are you sure to start over?

Loading...