Scanner ক্লাস জাভা ইউজার ইনপুট পড়তে ব্যবহৃত হয়। Java Scanner java.util প্যাকেজে বিল্ট-ইন থাকায়, এটি ব্যবহার করার জন্য কোনো এক্সটার্নাল লাইব্রেরি দরকার নয়। Scanner স্ট্যান্ডার্ড ইনপুট থেকে টেক্সট পড়ে। এই টেক্সট মেইন প্রোগ্রামে রিটার্ন হয় যাতে এটি স্টোর বা অন্যভাবে ম্যানিপুলেট করা যায়।
জাভাতে ইউজার ইনপুট কীভাবে নিতে হয় সেটি বুঝना একটি গুরুত্বপূর্ণ স্কিল। উদাহরণস্বরূপ, ধরুন আপনি একটি সাইন-ইন ফর্ম সহ একটি অ্যাপ বিল্ড করছেন। আপনাকে ইউজারের লগইন ক্রেডেনশিয়াল সংগ্রহের জন্য ইউজার ইনপুট হ্যান্ডেল করতে হবে।
জাভাতে, আপনি Scanner ক্লাস ব্যবহার করতে পারেন ইউজার ইনপুট রিসিভ করতে যা আপনি আপনার প্রোগ্রামে প্রসেস করতে পারবেন। এই টিউটোরিয়াল কিছু উদাহরণ ব্যবহার করে আলোচনা করবে কীভাবে Java Scanner ক্লাস ব্যবহার করে ইউজার ইনপুট রিসিভ করতে হয়।
Java Scanner ক্লাস ইউজার ইনপুট কलेक्ट করতে ব্যবহৃত হয়। Scanner java.util লাইব্রেরির অংশ, তাই এটি এক্সটার্নাল লাইব্রেরি ডাউনলোড ছাড়া ইম্পোর্ট করা যায়। Scanner স্ট্যান্ডার্ড ইনপুট থেকে টেক্সট পড়ে এবং এটিকে একটি প্রোগ্রামে রিটার্ন করে।
Scanner ক্লাসের সাথে কাজ করতে হলে, আপনাকে প্রথমে এটি আপনার কোডে ইম্পোর্ট করতে হবে। এটি করার দুটি উপায় আছে:
- আপনি যদি শুধু java.util.Scanner ক্লাসের সাথে কাজ করতে চান, তবে আপনি Scanner ক্লাসকে সরাসরি ইম্পোর্ট করতে পারেন।
- আপনি যদি java.util লাইব্রেরির অন্যান্য মডিউলের সাথে কাজ করেন, তবে আপনি পুরো লাইব্রেরি ইম্পোর্ট করতে চাইতে পারেন।
উপরের দুটি মেথডের জন্য কোড নিচে দেওয়া হলো:
import java.util.Scanner; import java.util.*;
কোডের প্রথম লাইন Scanner ক্লাস ইম্পোর্ট করে। দ্বিতীয় লাইন java.util লাইব্রেরির সব প্যাকেজ ইম্পোর্ট করে, Scanner সহ।
দ্রষ্টব্য যে জাভাতে ইউজার ইনপুট ডেটা রিসিভ করার অন্যান্য উপায়ও আছে। আপনি Java-এর BufferedReader, InputStreamReader, DataInputStream, এবং Console ক্লাস ব্যবহার করতে পারেন।
যাইহোক, Scanner ক্লাস জাভাতে ইউজার ইনপুট কलेक्ट করার সবচেয়ে জনপ্রিয় মেথড। তাই এই আর্টিকেলে আমরা সেটি ফোকাস করব।
জাভা ইউজার ইনপুট সিনট্যাক্স
আপনি Scanner ক্লাস ব্যবহার করে ইউজার ইনপুট কलेクト করতে পারেন। Scanner ক্লাস কনসোলে ইউজার যে টেক্সট ইনসার্ট করে সেটি পড়ে এবং সেটিকে প্রোগ্রামে পাঠায়। Scanner জাভা ইউজার ইনপুট কलेक्ट করার প্রাইমারি মেথড।
Java Scanner ক্লাস ইম্পোর্ট করার পর, আপনি এটি ব্যবহার শুরু করতে পারেন ইউজার ইনপুট কलेक्ट করতে। Java Scanner ক্লাসের সিনট্যাক্স এখানে:
Scanner input = new Scanner(System.in); int number = input.nextInt();
এই উদাহরণে, আমরা input নামক একটি ভেরিয়েবল তৈরি করেছি যা কনসোলে ইউজার যে পরবর্তী ভ্যালু ইনপুট করে সেটি কलेक्ट করে। তারপর আমরা number নামক একটি ভেরিয়েবল তৈরি করেছি যা ইউজার কনসোলে সাবমিট করা ভ্যালু কलेक्ट করে।
জাভা ইউজার ইনপুট উদাহরণ
উদাহরণস্বরূপ, ধরি আমরা একটি লোকাল কম্পিউটার স্টোরের জন্য একটি অ্যাপ্লিকেশন বিল্ড করছি যা তাদের ইনভেন্টরি ট্র্যাক করে।
ম্যানেজার আমাদের অনুরোধ করেছেন একটি সিম্পল প্রোগ্রাম তৈরি করতে যা সে দোকানের ইনভেন্টরি লিস্টে আইটেম যোগ করতে ব্যবহার করতে পারবে। ম্যানেজার দুটি ভ্যালু ইনপুট করতে চান: আইটেমের নাম এবং এর কোয়ান্টিটি।
এখানে আমরা যে কোড ব্যবহার করব সেটি:
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Product name: "); String product_name = input.next(); System.out.print("Value entered: " + product_name); System.out.print("Quantity: "); int quantity = input.nextInt(); System.out.print("Value entered: " + quantity); } } প্রথম ইনপুট আমরা আইটেমের নাম নিই। এটি একটি স্ট্রিং হবে কারণ আইটেমের নাম টেক্সট-ভিত্তিক এবং বিভিন্ন ক্যারেক্টার ব্যবহার করে। নিচের কোডে, আমরা এই স্ট্রিংকে ডিফাইন করেছি কোড দিয়ে: String product_name.
পরবর্তী ইনপুট হলো আইটেমের কোয়ান্টিটি। এটি একটি নম্বর। নিচের কোডে, আমরা এই নম্বরটি ডিফাইন করেছি কোড দিয়ে: int quantity, যেখানে int ইন্টিজার অর্থে।
আমরা আমাদের কোড রান করি এবং কিছু উদাহরণ ভ্যালু ইনসার্ট করি, প্রোগ্রাম নিচের রেসপন্স রিটার্ন করে:
Product name: 15-inch MacBook Pro 2019
Value entered: 15-inch MacBook Pro 2019
Quantity: 7
Value entered: 7
আপনি দেখতে পাচ্ছেন, আমাদের প্রোগ্রাম ইউজারের ইনপুট কलेक्ट করল। এরপর কনসোলে ইউজারের ইনপুট করা ভ্যালু রিটার্ন করল। এটি আমাদের প্রোগ্রাম কাজ করছে কিনা যাচাই করতে সাহায্য করে।
আমাদের Scanner জাভা প্রোগ্রাম কীভাবে কাজ করে
আমাদের কোডকে ধাপে ধাপে ব্রেক ডাউন করি।
- আমরা Scanner লাইব্রেরি আমাদের কোডে ইম্পোর্ট করি যাতে আমরা ইউজার ইনপুট রিসিভ করতে পারি।
- আমরা Main নামক একটি ক্লাস ডিক্লেয়ার করি যা আমাদের প্রোগ্রামের কোড স্টোর করে।
- আমরা Scanner ক্লাস ইনিশিয়ালাইজ করি Scanner input = new Scanner(System.in); ব্যবহার করে। input জাভা ভেরিয়েবল আমাদের ইনিশিয়ালাইজড scanner স্টোর করে।
- আমরা "Product name: " কনসোলে প্রিন্ট করি এবং ইউজারকে প্রোডাক্ট নাম সাবমিট করতে বলি input.next(); ব্যবহার করে।
- আমরা কনসোলে ইউজার সাবমিট করা প্রোডাক্ট নাম প্রিন্ট করি।
- আমরা Quantity: কনসোলে প্রিন্ট করি এবং ইউজারকে স্টকে প্রোডাক্টের কোয়ান্টিটি সাবমিট করতে প্রম্পট করি input.nextInt(); ব্যবহার করে।
- আমরা quantity ভেরিয়েবলের ভ্যালু কনসোলে প্রিন্ট করি।
লক্ষ্য করুন যে আমরা নম্বর এবং স্ট্রিং কलेक्ट করার জন্য ভিন্ন কোড ব্যবহার করেছি। প্রোডাক্ট নাম কलेक्ट করার সময় আমরা input.next(); ব্যবহার করেছি, এবং প্রোডাক্ট কোয়ান্টিটি কলে্ট করার সময় input.nextInt(); ব্যবহার করেছি।
Java Scanner: ইনপুট টাইপস
উপরের উদাহরণে, আমরা ইউজার থেকে দুটি টাইপের ডেটা কलेक्ट করেছি: একটি স্ট্রিং এবং একটি ইন্টিজার। যেমন বলা হয়েছে, এই টাইপের ডেটা কलेक्ट করার জন্য আমাদের ভিন্ন কোড ব্যবহার করতে হয়েছিল।
বিভিন্ন টাইপের ডেটা, যেন স্ট্রিং এবং ইন্টিজার, আলাদা মেথড ব্যবহার করে কलेक्ट করা হয়। তাই, একটি বুলিয়ান কलेक्ट করতে হলে, আপনি সেটি ফ্লোট কलेक्ट করার কোড থেকে ভিন্ন কোড ব্যবহার করবেন।

"Career Karma আমার জীবনে এসেছিল তখন আমাকে সবচেয়ে বেশি দরকার ছিল এবং দ্রুত একটি বুটক্যাম্পের সাথে ম্যাচ করতে সাহায্য করল। দু মাস পর গ্র্যাজুয়েট করার পর, আমি আমার স্বপ্নের জব পেলাম যা আমার মূল্যবোধ এবং জীবনের লক্ষ্যের সাথে মিলে যেত!"
Venus, Software Engineer at Rockbot
Find Your Bootcamp Match
এখানে একটি টেবিল দেওয়া হলো Scanner ক্লাস ব্যবহার করে জাভাতে ইউজার ইনপুট কलेक्ट করার সব মেথড:
MethodType of Value the Method CollectsnextBoolean()booleannextByte()bytenextDouble()doublenextFloat()floatnextInt()intnextLine()StringnextLong()longnextShort()shortআপনি যদি ভুল ইনপুট টাইপ ইনসার্ট করেন, তবে আপনার প্রোগ্রাম InputMismatchException থ্রো করবে। উদাহরণস্বরূপ, আপনি যদি একটি বুলিয়ান কলে্ট করার ফিল্ডে ডাবল ইনসার্ট করার চেষ্টা করেন, তবে আপনার প্রোগ্রাম এক্সসেপশন থ্রো করবে।
বুলিয়ান ভ্যালু কलेक्ट করা
কম্পিউটার স্টোরের উদাহরণে ফিরে যাই। ধরি আমরা আমাদের প্রথম প্রোগ্রাম আপডেট করতে চাই এবং আমাদের কম্পিউটার স্টোর ম্যানেজারকে ইনপুট দিতে দিই যে প্রোডাক্টটি ডিসপ্লে-এ আছে কিনা স্টকরুমে রাখা আছে।
এজন্য, আমরা একটি নতুন ভ্যালু কलेक्ट করতে চাই যেটি on_display নামک যা ইনপুটকে বুলিয়ান হিসেবে স্টোর করবে কারণ এর শুধু দুটি ভ্যালু হতে পারে: true বা false।
এই ডেটা কলে্ট করার জন্য আমরা যে কোড ব্যবহার করতে পারি সেটি:
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Product name: "); String product_name = input.next(); System.out.print("Value entered: " + product_name); System.out.print("Quantity: "); int quantity = input.nextInt(); System.out.print("Value entered: " + quantity); System.out.print("On display: "); boolean on_display = input.nextBoolean(); System.out.print("Value entered: " + on_display); } } আমরা কোড রান করি এবং কিছু উদাহরণ ভ্যালু ইনসার্ট করি, প্রোগ্রাম নিচের রেসপন্স রিটার্ন করে:
Product name: 15-inch MacBook Pro 2019
Value entered: 15-inch MacBook Pro 2019
Quantity: 7
Value entered: 7
On display: true
Value entered: true
আমাদের প্রোগ্রাম আমাদের উপরের উদাহরণের মতো একইভাবে কাজ করে। যাইহোক, এইবার আমরা ইউজার থেকে একটি অতিরিক্ত ভ্যালু কলে্ট করছি: প্রোগ্রামে ইনসার্ট করা প্রোডাক্টটি ডিসপ্লে-এ আছে কিনা। আমরা nextBoolean() মেথড ব্যবহার করি এই ভ্যালু ইউজার থেকে কলে্ট করতে। তারপর সেটি কনসোলে প্রিন্ট করি।
উপসংহার
আপনি Java-এর Scanner ক্লাস ব্যবহার করে ইউজার থেকে ইনপুট কলে্ট করতে পারেন। Scanner ক্লাস ইউজার থেকে বিভিন্ন ডেটা টাইপ কলে্ট করতে সক্ষম, যার মধ্যে short ভ্যালু, Strings, বুলিয়ান, এবং অন্যান্য।
এই টিউটোরিয়ালে, কিছু উদাহরণ ব্যবহার করে, আমরা এক্সপ্লোর করেছি কীভাবে Java Scanner ক্লাস ব্যবহার করে ইউজার ইনপুট কলে্ট করতে হয়। অথবা, আমরা Scanner ক্লাসের দ্বারা অফার করা বিভিন্ন ডেটা টাইপে আলোচনা করেছি যা আমরা ইউজার ইনপুট কলে্ট করতে ব্যবহার করতে পারি।
জাভাতে কোডিং সম্পর্কে আরও জানতে, আমাদের How to Code in Java গাইড পড়ুন।