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 এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- সহজ ব্যবহার:
Scannerব্যবহার করে কনসোল থেকে ইনপুট নেওয়া সহজ এবং দ্রুত। - Multiple Data Types: এটি বিভিন্ন ধরনের ডেটা (যেমন,
nextInt(),nextDouble(),nextLine()) একসাথে সমর্থন করে। - Error Handling: আপনি ভুল ইনপুট থেকে রক্ষা পাওয়ার জন্য সহজেই ইনপুট যাচাই করতে পারেন।
সীমাবদ্ধতা:
nextLine()এর সাথে সমস্যা:nextInt()বাnextDouble()ব্যবহার করার পরnextLine()ব্যবহার করলে লাইনের অবশিষ্ট অংশ পড়তে সমস্যা হতে পারে। এটি newline character (অর্থাৎEnter) গ্রহণ করার জন্য অতিরিক্তscanner.nextLine()কল করা প্রয়োজন।- Security Risk:
Scannerইনপুট স্ক্রীনে পাসওয়ার্ড দেখাতে পারে, যা নিরাপত্তা ঝুঁকি সৃষ্টি করতে পারে।
Scanner একটি অত্যন্ত সহজ এবং কার্যকরী উপায় যা কনসোল থেকে টেক্সট ডেটা ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। Java Tuples (যেমন Pair, Triplet) ব্যবহার করে আপনি ইনপুট ডেটা গোষ্ঠীভুক্ত এবং প্রক্রিয়া করতে পারেন, যা আপনার কোডকে আরও পরিষ্কার ও সোজা করে তোলে। ইনপুট যাচাই এবং ভুল ইনপুট হ্যান্ডলিংও সহজেই করা যায়।