Scanner ক্লাসটি Java এর java.util প্যাকেজের অংশ, যা ব্যবহারকারীর ইনপুট টেক্সট ডেটা পড়া এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। Scanner ক্লাসটি খুবই শক্তিশালী এবং বিভিন্ন ধরনের ইনপুট (যেমন স্ট্রিং, ইন্টিজার, ডেসিমাল নম্বর ইত্যাদি) গ্রহণ করতে সক্ষম। এটি keyboard input, files, এবং অন্যান্য সোর্স থেকে ইনপুট পড়তে ব্যবহৃত হতে পারে।
Scanner ক্লাসটি regular expressions ব্যবহার করে ডেটা প্রসেস করতে সক্ষম এবং এটি parse করার জন্য বিভিন্ন tokenizers প্রদান করে।
Scanner ক্লাসের সুবিধা:
- Flexible Input Handling:
- Scanner ক্লাসটি বিভিন্ন ধরনের ইনপুট (যেমন:
int,String,double, ইত্যাদি) গ্রহণ করতে সক্ষম।
- Scanner ক্লাসটি বিভিন্ন ধরনের ইনপুট (যেমন:
- Text Processing:
- এটি ইনপুট স্ট্রিংয়ের মধ্যে স্পেস, পাংকচুয়েশন এবং অন্যান্য চিহ্ন গুলি চিনতে পারে এবং regex (regular expressions) ব্যবহার করে ডেটা প্রসেস করতে পারে।
- File Reading:
- এটি ফাইল থেকেও ইনপুট পড়তে সক্ষম এবং স্ট্রিং বা নম্বর হিসেবে ডেটা পড়তে পারে।
- 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 এর সুবিধা:
- User-friendly Input:
- Scanner ক্লাস ব্যবহারকারী থেকে সহজে ইনপুট নিতে সক্ষম এবং ইনপুট ডেটা প্রক্রিয়া করার জন্য অনেক সুবিধা প্রদান করে।
- Multiple Data Types Support:
- এটি String, int, double, boolean সহ বিভিন্ন ধরনের ডেটা ইনপুট নেয়ার জন্য উপযুক্ত।
- Regular Expressions:
- Scanner ক্লাস regular expressions ব্যবহার করে ইনপুট ডেটাকে সহজেই প্রক্রিয়া করতে সক্ষম।
- File and Console Input:
- Scanner ক্লাস কনসোলের ইনপুটের পাশাপাশি ফাইল থেকেও ডেটা পড়তে সক্ষম।
Scanner Class এর সীমাবদ্ধতা:
- No Support for Object Serialization:
- Scanner ক্লাসটি শুধুমাত্র primitive data types এবং strings পড়ে। এটি অবজেক্টের serialization বা deserialization এর জন্য উপযুক্ত নয়।
- Blocking Input:
- Scanner ক্লাস ইনপুট গ্রহণ করার সময় blocking ভাবে কাজ করে, অর্থাৎ এটি ব্যবহারকারীর ইনপুটের জন্য অপেক্ষা করে। এটি কিছু অ্যাপ্লিকেশনে সমস্যা সৃষ্টি করতে পারে যেখানে non-blocking বা asynchronous ইনপুট প্রয়োজন।
- Resource Management:
- Scanner ক্লাস ব্যবহারের পরে close() মেথড কল করা গুরুত্বপূর্ণ, যাতে ব্যবহৃত রিসোর্স সঠিকভাবে বন্ধ হয়। এটি মেমরি লিক বা রিসোর্স রিলিজ সমস্যা এড়াতে সাহায্য করে।
- Scanner ক্লাস Java-তে টেক্সট ডেটা ইনপুট এবং প্রক্রিয়াকরণের জন্য একটি অত্যন্ত শক্তিশালী এবং সহজ ব্যবহারযোগ্য ক্লাস।
- এটি keyboard input, files এবং অন্যান্য সোর্স থেকে ইনপুট পড়তে সহায়ক এবং regular expressions এর মাধ্যমে ডেটা প্রক্রিয়া করতে সক্ষম।
next(),nextLine(),nextInt(),nextDouble()ইত্যাদি মেথডগুলি ইনপুট গ্রহণের জন্য ব্যবহৃত হয়, এবং এগুলি খুবই কার্যকরী ও ব্যবহারযোগ্য।
এটি কনসোল বা ফাইল থেকে ইনপুট পড়ার জন্য একটি প্রধান পছন্দ এবং Java অ্যাপ্লিকেশনগুলিতে বিভিন্ন ধরনের ডেটা ইনপুট এবং প্রক্রিয়াকরণ করতে সহজ উপায় প্রদান করে।