Scanner এবং Formatter Class

জাভা টাপল (Java Tuples) - Java Technologies

454

Scanner এবং Formatter হল Java I/O API এর দুটি গুরুত্বপূর্ণ ক্লাস, যা ডেটা ইনপুট এবং আউটপুট হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। এগুলির সাহায্যে আমরা ব্যবহারকারী থেকে ইনপুট নিতে এবং আউটপুট আর্গুমেন্ট ফরম্যাট করতে পারি। Tuples ব্যবহার করে এই ডেটা সহজে সংগ্রহ এবং প্রক্রিয়া করা যায়।


Scanner ক্লাস

Scanner ক্লাসটি ইনপুট ডেটা পড়ার জন্য ব্যবহৃত হয়, যেমন Command Line থেকে বা ফাইল থেকে ডেটা পড়া। এটি একটি সহজ পদ্ধতি যা বিভিন্ন ধরনের ডেটা (যেমন String, int, float, ইত্যাদি) পড়তে সক্ষম।

Scanner ক্লাসের ব্যবহার:

  • next(): পরবর্তী শব্দ পড়ে।
  • nextInt(): পরবর্তী পূর্ণসংখ্যা (integer) পড়ে।
  • nextLine(): পরবর্তী লাইন পড়ে (যতটুকু স্পেস থাকে)।

Scanner ক্লাসের উদাহরণ:

import java.util.Scanner;

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

        // String ইনপুট
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        // Integer ইনপুট
        System.out.print("Enter your age: ");
        int age = scanner.nextInt();

        // Float ইনপুট
        System.out.print("Enter your height (in meters): ");
        float height = scanner.nextFloat();

        // Tuples এ ডেটা স্টোর করা
        org.javatuples.Triplet<String, Integer, Float> person = org.javatuples.Triplet.with(name, age, height);

        // Tuples থেকে ডেটা প্রদর্শন
        System.out.println("Name: " + person.getValue0());
        System.out.println("Age: " + person.getValue1());
        System.out.println("Height: " + person.getValue2());

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

ব্যাখ্যা:

  • Scanner ব্যবহার করে name, age, এবং height ইনপুট নেওয়া হয়েছে।
  • পরে, এই ডেটাগুলিকে Triplet Tuples এর মধ্যে সংরক্ষণ করা হয়েছে এবং আউটপুট প্রদর্শন করা হয়েছে।

আউটপুট:

Enter your name: Alice
Enter your age: 25
Enter your height (in meters): 1.70
Name: Alice
Age: 25
Height: 1.7

Formatter ক্লাস

Formatter ক্লাসটি আউটপুট ফরম্যাট করার জন্য ব্যবহৃত হয়। এটি স্ট্রিং আউটপুটকে একটি নির্দিষ্ট ফরম্যাটে সাজানোর সুবিধা দেয়। এটি String.format() এর মতোই কাজ করে, কিন্তু এটি আউটপুট লিখতে বা রিটার্ন করতে ব্যবহৃত হয়।

Formatter ক্লাসের ব্যবহার:

  • format(): নির্দিষ্ট ফরম্যাটে আউটপুট তৈরি করে।
  • printf(): ফরম্যাটেড আউটপুট স্ট্রিমে প্রিন্ট করে।

ফরম্যাট স্টাইল:

  • %d: পূর্ণসংখ্যা (integer) ফরম্যাট।
  • %s: স্ট্রিং ফরম্যাট।
  • %f: দশমিক সংখ্যা (floating point) ফরম্যাট।
  • %x: হেক্সাডেসিমাল ফরম্যাট।

Formatter ক্লাসের উদাহরণ:

import java.util.Formatter;

public class FormatterExample {
    public static void main(String[] args) {
        String name = "Bob";
        int age = 30;
        float height = 1.75f;

        // Formatter ব্যবহার করে ফরম্যাটেড আউটপুট তৈরি
        Formatter formatter = new Formatter();
        formatter.format("Name: %s\nAge: %d\nHeight: %.2f meters", name, age, height);

        // ফরম্যাটেড আউটপুট প্রিন্ট করা
        System.out.println(formatter);

        // Formatter ক্লোজ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • Formatter ব্যবহার করে একটি ফরম্যাট তৈরি করা হয়েছে এবং name, age, এবং height ডেটাকে নির্দিষ্ট ফরম্যাটে প্রদর্শন করা হয়েছে।
  • %.2f ফরম্যাটিং দিয়ে height এর মান দশমিকের পর দুটি সংখ্যা প্রদর্শিত হয়েছে।

আউটপুট:

Name: Bob
Age: 30
Height: 1.75 meters

Scanner এবং Formatter এর সমন্বয়

Scanner ক্লাস ব্যবহার করে ইনপুট সংগ্রহ করা এবং Formatter ক্লাস ব্যবহার করে আউটপুট ফরম্যাট করা একটি সাধারণ এবং কার্যকরী পদ্ধতি। Tuples ব্যবহার করে ডেটা একত্রিত এবং প্রক্রিয়া করতে পারেন।

উদাহরণ: Scanner এবং Formatter এর সমন্বয়

import java.util.Scanner;
import java.util.Formatter;
import org.javatuples.Triplet;

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

        // Command line থেকে ইনপুট নেওয়া
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        System.out.print("Enter your age: ");
        int age = scanner.nextInt();

        System.out.print("Enter your height (in meters): ");
        float height = scanner.nextFloat();

        // Tuples এ ডেটা স্টোর করা
        Triplet<String, Integer, Float> personData = Triplet.with(name, age, height);

        // Formatter ব্যবহার করে আউটপুট ফরম্যাট করা
        Formatter formatter = new Formatter();
        formatter.format("Name: %s\nAge: %d\nHeight: %.2f meters\n", personData.getValue0(), personData.getValue1(), personData.getValue2());

        // ফরম্যাট করা আউটপুট প্রদর্শন
        System.out.println(formatter);
        
        // ক্লোজ করা
        formatter.close();
        scanner.close();
    }
}

ব্যাখ্যা:

  • Scanner ক্লাস ব্যবহার করে নাম, বয়স, এবং উচ্চতা ইনপুট নেয়া হয়েছে।
  • Formatter ক্লাস ব্যবহার করে আউটপুট ফরম্যাট করা হয়েছে।
  • ডেটা Tuples এর মধ্যে সংরক্ষণ করা হয়েছে এবং পরে ফরম্যাটেড আউটপুট প্রদর্শন করা হয়েছে।

আউটপুট:

Enter your name: Alice
Enter your age: 25
Enter your height (in meters): 1.70
Name: Alice
Age: 25
Height: 1.70 meters

Scanner এবং Formatter এর সুবিধা

Scanner এর সুবিধা:

  1. User-Friendly Input: Scanner ব্যবহার করে খুব সহজে ইউজার থেকে ইনপুট নেয়া যায়।
  2. Multiple Data Types: এটি বিভিন্ন ধরনের ইনপুট ডেটা (String, int, float, ইত্যাদি) পড়তে সক্ষম।
  3. Flexible Input: nextLine() এবং next() মেথডের মাধ্যমে একাধিক ইনপুট লাইনের জন্য সহজে ডেটা সংগ্রহ করা যায়।

Formatter এর সুবিধা:

  1. Formatted Output: Formatter আউটপুট ফরম্যাট করতে সাহায্য করে, যা পাঠযোগ্য এবং সুন্দর হয়।
  2. Customizable Output: আপনি কাস্টম আউটপুট ফরম্যাট তৈরি করতে পারেন যেমন দশমিকের পরে সংখ্যা নির্দিষ্ট করা, স্ট্রিং সঠিকভাবে সাজানো ইত্যাদি।
  3. Readable Code: আউটপুট ফরম্যাট করা কোডের রিডেবিলিটি বাড়ায়।

Scanner এবং Formatter ক্লাস জাভায় ইনপুট এবং আউটপুট ব্যবস্থাপনার জন্য খুবই গুরুত্বপূর্ণ। Tuples এর সাথে এই ক্লাসগুলো ব্যবহার করে ডেটা সংগঠিত এবং ফরম্যাট করা সহজ হয়। Scanner ব্যবহার করে ডেটা ইনপুট গ্রহণ এবং Formatter ব্যবহার করে আউটপুট ফরম্যাট করা, এটি একটি শক্তিশালী এবং কার্যকরী পদ্ধতি তৈরি করে।

Content added By

Java Tuples এবং Scanner ক্লাসের মাধ্যমে আপনি সহজে টেক্সট ডেটা ইনপুট নিতে এবং সেই ডেটা প্রক্রিয়া করতে পারেন। Scanner হল একটি খুবই সাধারণ এবং কার্যকরী ক্লাস যা java.util প্যাকেজের অংশ। এটি ব্যবহার করে আপনি কনসোল থেকে বা ফাইল থেকে ডেটা ইনপুট নিতে পারবেন। এই ইনপুট ডেটা পরে Tuples ব্যবহার করে গোষ্ঠীভুক্ত করা এবং প্রক্রিয়া করা যায়।

Scanner ক্লাসের ব্যবহার

Scanner ক্লাস সাধারণত কনসোল থেকে ডেটা পড়তে ব্যবহৃত হয়। আপনি সহজেই স্ট্রিং, ইন্টিজার, ডাবল ইত্যাদি টাইপের ডেটা ইনপুট নিতে পারেন।


Scanner ক্লাসের প্রধান মেথডসমূহ

মেথডব্যাখ্যা
nextLine()পরবর্তী পূর্ণ লাইনটি পড়ে (String)
nextInt()পরবর্তী পূর্ণসংখ্যা (Integer) পড়ে
nextDouble()পরবর্তী দশমিক সংখ্যার মান (Double) পড়ে
next()পরবর্তী একক শব্দ (String) পড়ে
hasNext()পরবর্তী টোকেন আছে কিনা তা চেক করে
close()স্ক্যানার ক্লোজ করে

Scanner ব্যবহার করে টেক্সট ইনপুট নেওয়া এবং প্রক্রিয়াকরণ

১. টেক্সট ইনপুট এবং প্রক্রিয়া উদাহরণ

import java.util.Scanner;
import org.javatuples.Pair;

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

        // ইউজার নাম ইনপুট নেওয়া
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        // বয়স ইনপুট নেওয়া
        System.out.print("Enter your age: ");
        int age = scanner.nextInt();

        // Tuples তৈরি করা
        Pair<String, Integer> person = Pair.with(name, age);

        // Tuples থেকে ডেটা অ্যাক্সেস করা
        System.out.println("Name: " + person.getValue0());
        System.out.println("Age: " + person.getValue1());

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

ব্যাখ্যা:

  • Scanner ব্যবহার করে কনসোল থেকে ইউজার নাম এবং বয়স ইনপুট নেয়া হয়েছে।
  • ইনপুট ডেটা Pair (Tuples) এর মাধ্যমে একত্রে রাখা হয়েছে, যেখানে নাম এবং বয়স দুটি ভ্যালু সেভ করা হয়েছে।
  • এরপর Tuples এর মাধ্যমে ডেটা অ্যাক্সেস করে আউটপুট প্রদর্শন করা হয়েছে।

আউটপুট:

Enter your name: Alice
Enter your age: 30
Name: Alice
Age: 30

২. Scanner ব্যবহার করে একাধিক ডেটা ইনপুট নেওয়া এবং প্রক্রিয়া করা

import java.util.Scanner;
import org.javatuples.Triplet;

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

        // ইউজারের নাম, বয়স, এবং পেশা ইনপুট নেয়া
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();

        System.out.print("Enter your age: ");
        int age = scanner.nextInt();
        scanner.nextLine();  // Consume newline left-over

        System.out.print("Enter your profession: ");
        String profession = scanner.nextLine();

        // Tuples তৈরি করা
        Triplet<String, Integer, String> personDetails = Triplet.with(name, age, profession);

        // Tuples থেকে ডেটা অ্যাক্সেস করা
        System.out.println("Name: " + personDetails.getValue0());
        System.out.println("Age: " + personDetails.getValue1());
        System.out.println("Profession: " + personDetails.getValue2());

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

ব্যাখ্যা:

  • এই উদাহরণে Scanner ব্যবহার করে তিনটি ইনপুট নেওয়া হয়েছে: ইউজারের নাম, বয়স এবং পেশা।
  • তারপর, এই তিনটি ইনপুট Triplet (Tuples) ব্যবহার করে একত্রে রাখা হয়েছে।
  • ডেটা পরবর্তীতে Tuples এর মাধ্যমে অ্যাক্সেস করা হয়েছে।

আউটপুট:

Enter your name: Bob
Enter your age: 25
Enter your profession: Developer
Name: Bob
Age: 25
Profession: Developer

৩. ইনপুটে error handling এবং validation

Scanner ব্যবহার করার সময় input validation অত্যন্ত গুরুত্বপূর্ণ। আপনি ইউজার ইনপুট যাচাই করতে পারেন, যেমন সঠিক ডেটা টাইপ চেক করা, অথবা ভুল ইনপুট থেকে রক্ষা পেতে।

import java.util.Scanner;

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

        int age = -1;
        // Age ইনপুট নেওয়া, যদি ভ্যালিড না হয় তবে পুনরায় ইনপুট চাওয়া
        while (age < 0) {
            System.out.print("Enter your age: ");
            if (scanner.hasNextInt()) {
                age = scanner.nextInt();
                if (age < 0) {
                    System.out.println("Age cannot be negative. Try again.");
                }
            } else {
                System.out.println("Invalid input! Please enter a valid number.");
                scanner.next(); // Consume the invalid input
            }
        }

        System.out.println("Your age is: " + age);

        scanner.close();
    }
}

ব্যাখ্যা:

  • এখানে Scanner.hasNextInt() ব্যবহার করা হয়েছে ইনপুট চেক করতে, যাতে শুধুমাত্র একটি বৈধ পূর্ণসংখ্যা ইনপুট হিসাবে গ্রহণ করা হয়।
  • যদি ইউজার ভুল ইনপুট দেয় (যেমন স্ট্রিং এর মাধ্যমে পূর্ণসংখ্যা), তবে scanner.next() ব্যবহার করা হয়েছে অকার্যকর ইনপুটকে উপেক্ষা করতে।

আউটপুট:

Enter your age: abc
Invalid input! Please enter a valid number.
Enter your age: -5
Age cannot be negative. Try again.
Enter your age: 25
Your age is: 25

Scanner এর সুবিধা এবং সীমাবদ্ধতা

সুবিধা:

  1. সহজ ব্যবহার: Scanner ব্যবহার করে কনসোল থেকে ইনপুট নেওয়া সহজ এবং দ্রুত।
  2. Multiple Data Types: এটি বিভিন্ন ধরনের ডেটা (যেমন, nextInt(), nextDouble(), nextLine()) একসাথে সমর্থন করে।
  3. Error Handling: আপনি ভুল ইনপুট থেকে রক্ষা পাওয়ার জন্য সহজেই ইনপুট যাচাই করতে পারেন।

সীমাবদ্ধতা:

  1. nextLine() এর সাথে সমস্যা: nextInt() বা nextDouble() ব্যবহার করার পর nextLine() ব্যবহার করলে লাইনের অবশিষ্ট অংশ পড়তে সমস্যা হতে পারে। এটি newline character (অর্থাৎ Enter) গ্রহণ করার জন্য অতিরিক্ত scanner.nextLine() কল করা প্রয়োজন।
  2. Security Risk: Scanner ইনপুট স্ক্রীনে পাসওয়ার্ড দেখাতে পারে, যা নিরাপত্তা ঝুঁকি সৃষ্টি করতে পারে।

Scanner একটি অত্যন্ত সহজ এবং কার্যকরী উপায় যা কনসোল থেকে টেক্সট ডেটা ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। Java Tuples (যেমন Pair, Triplet) ব্যবহার করে আপনি ইনপুট ডেটা গোষ্ঠীভুক্ত এবং প্রক্রিয়া করতে পারেন, যা আপনার কোডকে আরও পরিষ্কার ও সোজা করে তোলে। ইনপুট যাচাই এবং ভুল ইনপুট হ্যান্ডলিংও সহজেই করা যায়।

Content added By

Formatter ক্লাস হল java.util প্যাকেজের একটি অংশ, যা জাভাতে ফর্ম্যাটেড আউটপুট তৈরি করার জন্য ব্যবহৃত হয়। এটি C-style ফর্ম্যাটিং সমর্থন করে এবং printf() এবং format() মেথড ব্যবহার করে আউটপুট কাস্টমাইজ করা যায়।

Formatter ক্লাসটি মূলত PrintStream বা PrintWriter এর মত স্ট্রিম আউটপুট ব্যবস্থার জন্য ব্যবহৃত হয়। তবে, আপনি Formatter ক্লাসের মাধ্যমে আউটপুট স্ট্রিং তৈরি করতে পারেন যা পরে System.out বা অন্যান্য আউটপুট স্ট্রিমে লেখা যায়।

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

  1. Formatted Output: এটি আউটপুট ফরম্যাট করার জন্য বিভিন্ন প্লেসহোল্ডার এবং ফরম্যাট স্পেসিফায়ার ব্যবহার করতে দেয়।
  2. Type-Safe Formatting: এটি টাইপ-সেফ আউটপুট ফরম্যাটিং সরবরাহ করে, যাতে ভুল টাইপের ডেটার কারণে সমস্যা না হয়।
  3. Locale Support: আউটপুটের ফরম্যাট লোকালাইজ করা যায়, যেমন মুদ্রা এবং তারিখ ফরম্যাট।

Formatter Class এর প্রধান মেথড

মেথডব্যাখ্যা
format(String format, Object... args)ফরম্যাট করা আউটপুট স্ট্রিং রিটার্ন করে।
printf(String format, Object... args)ফরম্যাটেড আউটপুট প্রিন্ট করে।
toString()ফরম্যাট করা আউটপুট স্ট্রিং রিটার্ন করে।
close()Formatter ক্লাসের রিসোর্স বন্ধ করে।

Formatter Class এর ব্যবহার

1. আউটপুট ফরম্যাটিং উদাহরণ:

import java.util.Formatter;

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

        // বিভিন্ন ধরনের আউটপুট ফরম্যাটিং
        formatter.format("Hello, %s! Your age is %d years old.", "Alice", 25);
        System.out.println(formatter.toString());

        // ফরম্যাটিংয়ের পরে Formatter ক্লোজ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • format() মেথডটি একটি ফরম্যাট স্ট্রিং এবং আর্গুমেন্ট নিয়ে আউটপুট তৈরি করে।
  • %s ব্যবহার করা হয়েছে স্ট্রিং ফরম্যাটের জন্য এবং %d ব্যবহার করা হয়েছে পূর্ণসংখ্যা (integer) ফরম্যাটের জন্য।

আউটপুট:

Hello, Alice! Your age is 25 years old.

2. printf() মেথড ব্যবহার করে আউটপুট প্রিন্ট করা:

public class PrintfExample {
    public static void main(String[] args) {
        String name = "Bob";
        int age = 30;
        double salary = 55000.75;

        // printf() ব্যবহার করে ফরম্যাটেড আউটপুট
        System.out.printf("Name: %s, Age: %d, Salary: %.2f\n", name, age, salary);
    }
}

ব্যাখ্যা:

  • printf() মেথড সরাসরি কনসোলে আউটপুট প্রিন্ট করে।
  • %.2f ব্যবহার করা হয়েছে ডেসিমাল ফরম্যাটে দুটি দশমিক সহ ভাসমান পয়েন্ট সংখ্যা (float) প্রদর্শনের জন্য।

আউটপুট:

Name: Bob, Age: 30, Salary: 55000.75

3. বিভিন্ন ডেটা টাইপের ফরম্যাটিং:

import java.util.Formatter;

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

        // ফরম্যাটিং এর বিভিন্ন উদাহরণ
        formatter.format("Integer: %d\n", 123);
        formatter.format("String: %s\n", "Hello World");
        formatter.format("Floating Point: %.2f\n", 123.456);
        formatter.format("Hexadecimal: %x\n", 255);

        // ফরম্যাটেড আউটপুট
        System.out.println(formatter.toString());

        // Formatter ক্লোজ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • %d: পূর্ণসংখ্যা (Integer) ফরম্যাট
  • %s: স্ট্রিং ফরম্যাট
  • %.2f: ভাসমান পয়েন্ট সংখ্যা (Float) দুটি দশমিক সহ
  • %x: হেক্সাডেসিমাল (Hexadecimal) সংখ্যা

আউটপুট:

Integer: 123
String: Hello World
Floating Point: 123.46
Hexadecimal: ff

4. Locale-Specific Formatting

import java.util.Formatter;
import java.util.Locale;

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

        // Locale ব্যবহার করে মুদ্রার ফরম্যাট
        double amount = 123456.789;

        // US Locale
        formatter.format(Locale.US, "US Currency: %, .2f\n", amount);

        // Germany Locale
        formatter.format(Locale.GERMANY, "Germany Currency: %, .2f\n", amount);

        // Display the result
        System.out.println(formatter.toString());

        // Formatter ক্লোজ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • Locale.US এবং Locale.GERMANY ব্যবহার করে দেশের নির্দিষ্ট মুদ্রা ফরম্যাটে আউটপুট প্রদর্শন করা হয়েছে।

আউটপুট:

US Currency: 123, 456.79
Germany Currency: 123. 456,79

Formatter Class এর সুবিধা

  1. Flexible and Powerful Formatting: এটি ফরম্যাটিংয়ের জন্য একটি শক্তিশালী এবং নমনীয় উপায় প্রদান করে।
  2. Type-Safe: এটি টাইপ সেফ, অর্থাৎ আপনি নিশ্চিত থাকতে পারেন যে আর্গুমেন্টগুলির টাইপ ফরম্যাটের সাথে মেলে।
  3. Supports Various Data Types: এটি বিভিন্ন ধরনের ডেটা টাইপ যেমন ইন্টিজার, স্ট্রিং, ফ্লোট, ডাবল ইত্যাদি সঠিকভাবে ফরম্যাট করতে সক্ষম।
  4. Locale-Based Formatting: বিভিন্ন দেশে মুদ্রা এবং তারিখ ফরম্যাট করার সুবিধা দেয়।

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

  1. Complexity in Handling Large Data: বড় ডেটার জন্য প্রক্রিয়া কিছুটা জটিল হতে পারে।
  2. Does Not Handle Custom Types: কাস্টম ডেটা টাইপের জন্য ফরম্যাটিং সীমাবদ্ধ।

Best Practices for Using Formatter

  1. Use Locale: দেশের নির্দিষ্ট ফরম্যাটের জন্য Locale ব্যবহার করুন।
  2. Input Validation: ব্যবহারকারীর ইনপুট ফরম্যাট সঠিক কি না তা যাচাই করুন।
  3. Avoid Hardcoding Values: ফরম্যাটিং স্পেসিফায়ার এবং আর্গুমেন্টগুলি ডাইনামিকভাবে প্রদান করুন।

Formatter ক্লাস একটি শক্তিশালী টুল যা জাভাতে formatted output তৈরি করার জন্য ব্যবহৃত হয়। এটি printf(), format() এবং toString() মেথডের মাধ্যমে আউটপুট ফরম্যাটের জন্য ব্যবহৃত হয় এবং এটি টাইপ-সেফ, নমনীয় এবং বিভিন্ন ডেটা টাইপের জন্য কার্যকরী। এটি ব্যবহার করে বিভিন্ন ধরনের আউটপুট যেমন স্ট্রিং, পূর্ণসংখ্যা, ভাসমান পয়েন্ট সংখ্যা, এবং লোকালাইজড ফরম্যাটে মুদ্রা আউটপুট তৈরি করা যায়।

Content added By

Scanner এবং Formatter ক্লাসগুলি জাভাতে ইনপুট এবং আউটপুট হ্যান্ডলিংয়ের জন্য গুরুত্বপূর্ণ টুল। Scanner ক্লাস ব্যবহার করে আপনি কনসোল থেকে ডেটা ইনপুট নিতে পারেন এবং Formatter ক্লাস ব্যবহার করে সেই ইনপুট ডেটাকে সুন্দরভাবে ফরম্যাট করে আউটপুট প্রদর্শন করতে পারেন।

এখানে আমরা Java Tuples (যেমন Pair, Triplet) ব্যবহার করে Scanner এবং Formatter ক্লাসের মাধ্যমে ডেটা ইনপুট এবং আউটপুট পরিচালনা করার উদাহরণ দেখবো।


Scanner এবং Formatter এর ব্যবহার

1. Scanner ব্যবহার করে ইনপুট নেওয়া এবং Formatter দিয়ে আউটপুট ফরম্যাট করা

import java.util.Scanner;
import java.util.Formatter;
import org.javatuples.Triplet;

public class ScannerFormatterExample {
    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.print("Enter your age: ");
        int age = scanner.nextInt();

        System.out.print("Enter your height: ");
        double height = scanner.nextDouble();

        // Tuples এ ইনপুট ডেটা সংরক্ষণ
        Triplet<String, Integer, Double> person = Triplet.with(name, age, height);

        // Formatter অবজেক্ট তৈরি
        Formatter formatter = new Formatter();

        // ফরম্যাটেড আউটপুট তৈরি করা
        formatter.format("Name: %s\nAge: %d\nHeight: %.2f meters\n", person.getValue0(), person.getValue1(), person.getValue2());

        // ফরম্যাটেড আউটপুট প্রিন্ট করা
        System.out.println(formatter.toString());

        // ক্লোজ করা
        scanner.close();
        formatter.close();
    }
}

ব্যাখ্যা:

  • Scanner ব্যবহার করে ইউজার থেকে নাম, বয়স এবং উচ্চতা ইনপুট নেওয়া হয়েছে।
  • এই ইনপুট ডেটা Triplet (Tuples) এর মাধ্যমে একত্রে সংরক্ষিত হয়েছে।
  • Formatter ব্যবহার করে আউটপুট ফরম্যাট করা হয়েছে এবং System.out.println() মাধ্যমে আউটপুট প্রদর্শিত হয়েছে।

আউটপুট:

Enter your name: Alice
Enter your age: 30
Enter your height: 1.75
Name: Alice
Age: 30
Height: 1.75 meters

2. Scanner এবং Formatter ব্যবহার করে আরও complex ডেটা ইনপুট এবং আউটপুট

import java.util.Scanner;
import java.util.Formatter;
import org.javatuples.Pair;

public class ComplexInputOutput {
    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.print("Enter your age: ");
        int age = scanner.nextInt();

        System.out.print("Enter your salary: ");
        double salary = scanner.nextDouble();

        // Tuples ব্যবহার করে ইনপুট ডেটা সংরক্ষণ
        Pair<String, Integer> personInfo = Pair.with(name, age);
        Pair<String, Double> salaryInfo = Pair.with(name, salary);

        // Formatter ব্যবহার করে আউটপুট ফরম্যাট করা
        Formatter formatter = new Formatter();
        formatter.format("Name: %s\nAge: %d\nSalary: %.2f\n", personInfo.getValue0(), personInfo.getValue1(), salaryInfo.getValue1());

        // ফরম্যাট করা আউটপুট প্রিন্ট করা
        System.out.println(formatter.toString());

        // ক্লোজ করা
        scanner.close();
        formatter.close();
    }
}

ব্যাখ্যা:

  • Pair ব্যবহার করে আমরা দুটি আলাদা টাপলে ইউজারের নাম, বয়স এবং বেতন সংরক্ষণ করেছি।
  • Formatter ব্যবহার করে আউটপুট ফরম্যাট করা হয়েছে এবং আউটপুট প্রদর্শন করা হয়েছে।

আউটপুট:

Enter your name: John
Enter your age: 28
Enter your salary: 55000.50
Name: John
Age: 28
Salary: 55000.50

3. কমান্ড লাইন আর্গুমেন্ট ব্যবহার করে Scanner এবং Formatter এর মাধ্যমে আউটপুট

import java.util.Scanner;
import java.util.Formatter;

public class CommandLineWithFormatter {
    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("Please provide name, age, and salary as arguments.");
            return;
        }

        // কমান্ড লাইন আর্গুমেন্ট থেকে ডেটা নেওয়া
        String name = args[0];
        int age = Integer.parseInt(args[1]);
        double salary = Double.parseDouble(args[2]);

        // Formatter অবজেক্ট তৈরি
        Formatter formatter = new Formatter();

        // আউটপুট ফরম্যাট করা
        formatter.format("Name: %s\nAge: %d\nSalary: %.2f\n", name, age, salary);

        // ফরম্যাট করা আউটপুট প্রিন্ট করা
        System.out.println(formatter.toString());

        // Formatter ক্লোজ করা
        formatter.close();
    }
}

ব্যাখ্যা:

  • কমান্ড লাইন আর্গুমেন্ট হিসাবে নাম, বয়স, এবং বেতন প্রাপ্ত হয়েছে।
  • আর্গুমেন্টগুলির মাধ্যমে আউটপুট Formatter ব্যবহার করে ফরম্যাট করা হয়েছে এবং পরবর্তীতে আউটপুট প্রদর্শিত হয়েছে।

উদাহরণ:

java CommandLineWithFormatter Alice 30 50000.00

আউটপুট:

Name: Alice
Age: 30
Salary: 50000.00

Scanner এবং Formatter এর ব্যবহারিক সুবিধা

  1. Scanner এর সুবিধা:
    • সহজেই কনসোল বা ফাইল থেকে ইনপুট নেয়া যায়।
    • বিভিন্ন ধরনের ডেটা (String, int, float) পড়তে সক্ষম।
    • ইউজারের ইনপুট প্রক্রিয়া করতে খুবই কার্যকর।
  2. Formatter এর সুবিধা:
    • আউটপুট ফরম্যাট করা খুব সহজ এবং নমনীয়।
    • টাইপ-সেফ আউটপুট প্রদান করে।
    • printf() মেথডের মাধ্যমে সরাসরি আউটপুট প্রিন্ট করা যায়।

Scanner এবং Formatter ক্লাস জাভাতে ইনপুট এবং আউটপুট হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। Tuples (যেমন Pair, Triplet) ব্যবহার করে আপনি একাধিক ভ্যালু একত্রে সঞ্চয় এবং প্রক্রিয়া করতে পারেন, যা কমপ্লেক্স ডেটা ম্যানিপুলেশন সহজ করে। এই টুলগুলি একত্রে ব্যবহার করলে আপনার প্রোগ্রাম আরও কার্যকরী, সোজা এবং পরিষ্কার হয়।

Content added By
Promotion

Are you sure to start over?

Loading...