কিভাবে জাভাতে স্ক্যানার ব্যবহার করবেন

How Use Scanner Java



জাভাতে স্ক্যানার হল java.util প্যাকেজের একটি ক্লাস। এই শ্রেণীর লক্ষ্য একটি স্ট্রিং, কীবোর্ড, ফাইল বা নেটওয়ার্ক সকেট থেকে ইনপুট পড়া। এই নিবন্ধটি শুধুমাত্র কীবোর্ড থেকে ইনপুট পড়া এবং টার্মিনাল উইন্ডোতে ফলাফল প্রদর্শনের উপর মনোনিবেশ করে। ফাইল বা নেটওয়ার্ক চ্যানেল থেকে ইনপুট পড়ার জন্য অনুরূপ ধারণা ব্যবহার করা যেতে পারে। স্ক্যানার টার্মিনাল উইন্ডোতে প্রিন্ট করে না। টার্মিনালে প্রিন্ট করতে System.out অবজেক্ট ব্যবহার করুন। টার্মিনালে মুদ্রণ করার জন্য এই বস্তুটি ব্যবহার করা সহজ, নীচে চিত্রিত।

স্ক্যানার ক্লাস ব্যবহার করার জন্য, এটি প্রথমে আমদানি করতে হবে। এর পরে, একটি বস্তু থেকে তাৎক্ষণিকভাবে এটি করতে হবে। স্ক্যানার বস্তু ব্যবহার করার পর, এটি বন্ধ করতে হবে। কীবোর্ডের প্রতিনিধিত্বকারী ইনপুট স্ট্রিম অবজেক্ট হল System.in। স্ক্যানারের অনেক পদ্ধতি আছে। কেবলমাত্র সাধারণভাবে ব্যবহৃত জিনিসগুলি এই নিবন্ধে ব্যাখ্যা করা হবে।







নিবন্ধ বিষয়বস্তু



স্ক্যানার ক্লাসের সহজ ব্যবহার

নিম্নলিখিত কোডটি ব্যবহারকারীকে একটি বাক্য টাইপ করতে বলে, এবং তারপর এটি বাক্যটি প্রদর্শন করে:



আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);
পদ্ধতিবাইরেprintln('একটি বাক্য লিখুন এবং এন্টার টিপুন:');

স্ট্রিং বাক্য=স্ক্যান ওবিজে।পরবর্তী লাইন();
পদ্ধতিবাইরেprintln(বাক্য);

স্ক্যান ওবিজে।বন্ধ();
}
}

প্রথম লাইন স্ক্যানার ক্লাস আমদানি করে। মূল ফাংশনে, প্রথম লাইনটি কিবোর্ডের জন্য System.in অবজেক্ট ব্যবহার করে একটি স্ক্যানার বস্তু তৈরি করে। যত তাড়াতাড়ি স্ক্যানার বস্তু তৈরি করা হয়, এটি ইনপুটের জন্য অপেক্ষা শুরু করে। পরবর্তী লাইনটি একটি বিবৃতি মুদ্রণ করে, ব্যবহারকারীকে একটি বাক্যে টাইপ করতে বলে। কোডে নিচের লাইনটি ব্যবহারকারীর বাক্য পড়ার জন্য এন্টার চাপার পরে স্ক্যানার বস্তুর পরবর্তী লাইন () পদ্ধতি ব্যবহার করে। কোডের পরে লাইন, টার্মিনাল উইন্ডোতে বাক্যটি পুনরায় মুদ্রণ করে। শেষ লাইনটি স্ক্যানার বস্তুটি বন্ধ করে দেয়।





মানগুলির মধ্যে ইনপুট লাইন থুথু

নিচের কোডটি ইনপুট লাইনটিকে শব্দে (টোকেন) বিভক্ত করে, স্থানটিকে ডিলিমিটার হিসেবে ব্যবহার করে:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);
পদ্ধতিবাইরেprintln('টোকেনের একটি লাইন টাইপ করুন এবং এন্টার টিপুন:');

যখন(স্ক্যান ওবিজে।পরবর্তী আছে()){
পদ্ধতিবাইরেprintln(স্ক্যান ওবিজে।পরবর্তী());
}

স্ক্যান ওবিজে।বন্ধ();
}
}

hasNext () এবং next () স্ক্যানার অবজেক্টের অন্য দুটি পদ্ধতি। যখন স্ক্যানার বস্তুটি একটি লাইন পড়ে, তখন তা রাখে। next () পরবর্তী টোকেন (শব্দ) অ্যাক্সেস করে। hasNext () সত্য ফিরে আসে যদি অন্য কোন টোকেন এখনও অ্যাক্সেস করা না থাকে।



দুর্ভাগ্যবশত, ব্যবহারকারী এখনও এই কোড দিয়ে বিভক্ত এবং পুনরায় প্রদর্শনের জন্য ইনপুট টাইপ করবে বলে আশা করা হচ্ছে। সব শেষ করতে, Ctrl+z টিপুন, এবং আপনাকে কমান্ড প্রম্পটে ফিরে আসতে হবে।

উপরের কোডে, ডেলিমিটার স্পেসে টোকেন আলাদা করে। আরেকটি চরিত্র ব্যবহার করা যেতে পারে। নিচের কোডটি কমা ব্যবহার করে। কোডটি পরীক্ষা করলে লুপ শেষ করতে Ctrl+z চাপতে ভুলবেন না।

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);
পদ্ধতিবাইরেprintln('টোকেনের একটি লাইন টাইপ করুন এবং এন্টার টিপুন:');

স্ক্যান ওবিজে।ডেলিমিটার ব্যবহার করুন(',');

যখন(স্ক্যান ওবিজে।পরবর্তী আছে()){
পদ্ধতিবাইরেprintln(স্ক্যান ওবিজে।পরবর্তী());
}

স্ক্যান ওবিজে।বন্ধ();
}
}

আপনি যদি কোডটি পরীক্ষা করেন, আপনি লক্ষ্য করেছেন যে টোকেনগুলিতে স্থানগুলি টোকেনের অংশ হিসাবে অন্তর্ভুক্ত করা হয়েছে (আউটপুট)। অভিব্যক্তি, scanObj.useDelimiter (,); ইনপুট লাইন পড়ার পরে টাইপ করা হয়েছে; এটিই কমা, ডিলিমিটার তৈরি করে।

আদিম ডেটা প্রকারগুলি পড়া এবং যাচাই করা

nextBoolean () পদ্ধতি

নিম্নোক্ত কোডে, ব্যবহারকারীর উদ্ধৃতি ছাড়াই সত্য বা মিথ্যা টাইপ করার আশা করা হচ্ছে এবং তারপর ব্যবহারকারী যদি হ্যাঁ বা না কিছু টাইপ করেন তবে এন্টার কী টিপুন, একটি ত্রুটি বার্তা প্রদর্শিত হবে।

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেছাপা('আপনি কি 24 এর উপরে? ');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

বুলিয়ানbl=স্ক্যান ওবিজে।পরবর্তী বুলিয়ান();
যদি (bl== সত্য) {
পদ্ধতিবাইরেprintln('আপনার বয়স 24 এর বেশি');
}
অন্য যদি (bl== মিথ্যা) {
পদ্ধতিবাইরেprintln('আপনার বয়স 24 বছরের কম');
}

স্ক্যান ওবিজে।বন্ধ();
}
}

যেহেতু জাভা একটি ত্রুটি বার্তা জারি করবে যতক্ষণ না ইনপুটটি সত্য বা মিথ্যা নয়, অন্যথায় অন্যের পরিবর্তে ব্যবহার করা হয়েছে।

পদ্ধতিগুলির মধ্যে পার্থক্য, মুদ্রণ এবং println, প্রিন্ট বর্তমান লাইনে ইনপুট আশা করে, যখন println পরবর্তী লাইনে ইনপুট আশা করে।

nextByte () পদ্ধতি

ASCII অক্ষর সেট সহ, একটি অক্ষর এক বাইট। যাইহোক, কিছু পূর্ব অক্ষর সেটগুলির সাথে, একটি অক্ষর একাধিক বাইট নিয়ে গঠিত হতে পারে। অক্ষর সেট থেকে স্বাধীন, নেক্সটবাইট পদ্ধতি ইনপুটের পরবর্তী বাইটটি পড়ে এবং যাচাই করে। এই উদ্দেশ্যে নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেছাপা('নম্বর টাইপ করুন<128, press Enter: ');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

বাইটবিটি=স্ক্যান ওবিজে।পরবর্তী বাইট();
পদ্ধতিবাইরেprintln(বিটি);

স্ক্যান ওবিজে।বন্ধ();
}
}

যদি 127 এর চেয়ে বড় সংখ্যা বা বর্ণমালার অক্ষর এই কোডের জন্য ইনপুট করা হয়, একটি ত্রুটি বার্তা জারি করা হবে।

nextInt () পদ্ধতি

একটি ইনপুট হিসাবে পরবর্তী পূর্ণসংখ্যা টোকেন যাচাই এবং গ্রহণ করা যেতে পারে। নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেছাপা('কোন পূর্ণসংখ্যা লিখুন:');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

intএকের উপর=স্ক্যান ওবিজে।পরবর্তী();
পদ্ধতিবাইরেprintln(একের উপর);

স্ক্যান ওবিজে।বন্ধ();
}
}

শীর্ষস্থানীয় বা পিছনের স্থানগুলি সরানো হয়েছে। এই কোডের জন্য, 127 এর বেশি মান সহ যেকোন পূর্ণসংখ্যা মান গ্রহণ করা হবে। এই পরবর্তী XXXX () পদ্ধতির সাথে, একবার যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি বার্তা জারি করা হয়।

nextBigInteger () পদ্ধতি

মনে হচ্ছে সফটওয়্যার ইঞ্জিনিয়াররা নতুন কিছু নিয়ে আসা বন্ধ করবে না। একটি বড় পূর্ণসংখ্যা হল একটি পূর্ণসংখ্যা যার মান একটি পূর্ণসংখ্যার চেয়ে অনেক বড়। যাইহোক, জাভা দিয়ে, এটি পূর্ণসংখ্যা হিসাবে একইভাবে পড়া যেতে পারে। নিচের কোডটি এটিকে ব্যাখ্যা করে:

আমদানি java.util.Scanner;
আমদানি java.math.BigInteger;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেprintln('বড় পূর্ণসংখ্যার জন্য যেকোনো পূর্ণসংখ্যা লিখুন:');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

বিগইনটেজার একের উপর=স্ক্যান ওবিজে।nextBigInteger();
পদ্ধতিবাইরেprintln(একের উপর);

স্ক্যান ওবিজে।বন্ধ();
}
}

আমদানি বিবৃতি নোট করুন, java.math.BigInteger আমদানি করুন। এছাড়াও, মনে রাখবেন যে বড় পূর্ণসংখ্যা টাইপটি বড় হাতের B দিয়ে শুরু হয়েছে এবং ছোট হাতের খ নয়।

nextFloat () পদ্ধতি

একটি ইনপুট হিসাবে পরবর্তী ফ্লোট টোকেনটি যাচাই এবং গ্রহণ করা যেতে পারে। নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেছাপা('কোন ফ্লোটে প্রবেশ করুন:');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

ভাসাএকের উপর=স্ক্যান ওবিজে।পরবর্তী ফ্লোট();
পদ্ধতিবাইরেprintln(একের উপর);

স্ক্যান ওবিজে।বন্ধ();
}
}

একটি ভাসমান সংখ্যার একটি উদাহরণ 23.456। শীর্ষস্থানীয় বা পিছনের স্থানগুলি সরানো হয়েছে।

পরের ডাবল ()

একটি ইনপুট হিসাবে পরবর্তী ডাবল টোকেন যাচাই এবং গ্রহণ করা যেতে পারে। নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেছাপা('কোন ডাবল লিখুন:');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

দ্বিগুণএকের উপর=স্ক্যান ওবিজে।পরের ডাবল();
পদ্ধতিবাইরেprintln(একের উপর);

স্ক্যান ওবিজে।বন্ধ();
}
}

একটি দ্বিগুণ সংখ্যার একটি উদাহরণ 23.456। একটি ডবল সংখ্যা একটি ভাসা থেকে আলাদা কারণ এতে ত্রুটির কম মার্জিন রয়েছে। শীর্ষস্থানীয় বা পিছনের স্থানগুলি সরানো হয়েছে।

nextLine () পদ্ধতি

পরবর্তী লাইন () পদ্ধতি একটি স্ট্রিং জন্য। যদি স্ট্রিংটি এন্টার চাপার পরে কীবোর্ড থেকে ইনপুট লাইন হয়, তবে এটিতে নতুন লাইন অক্ষর থাকতে পারে, ' n'। নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
পদ্ধতিবাইরেprintln('একটি লাইন আছে লিখুনn: ');
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

স্ট্রিং পৃ=স্ক্যান ওবিজে।পরবর্তী লাইন();
পদ্ধতিবাইরেprintln(পৃ);

স্ক্যান ওবিজে।বন্ধ();
}
}

লক্ষ্য করুন যে স্ট্রিং টাইপটি বড় হাতের S দিয়ে শুরু হয়েছে এবং ছোট হাতের s দিয়ে নয়।

পরের লাইন (), hasNext () এবং পরবর্তী () পদ্ধতিগুলি আগে ব্যবহার করা হয়েছে, এই নিবন্ধে। স্ক্যানারের অন্যান্য পদ্ধতি এবং অন্যান্য আদিম ডেটা পদ্ধতি রয়েছে - পরে দেখুন।

একটি পরিবর্তনশীল ইনপুট বরাদ্দ করা

ইনপুট একটি ভেরিয়েবলের জন্য নির্ধারিত হতে পারে, যেমন নিম্নলিখিত কোড দেখায়:

আমদানি java.util.Scanner;

জনসাধারণ শ্রেণীশ্রেণী{
জনসাধারণ স্থির শূন্যপ্রধান( স্ট্রিং []যুক্তি) {
স্ক্যানার scanObj= নতুনস্ক্যানার( পদ্ধতিভিতরে);

পদ্ধতিবাইরেছাপা('রত: ');
স্ট্রিং নাম=স্ক্যান ওবিজে।পরবর্তী লাইন();

পদ্ধতিবাইরেছাপা('বয়স লিখুন:');
intবয়স=স্ক্যান ওবিজে।পরবর্তী();

পদ্ধতিবাইরেছাপা('বেতন লিখুন:');
দ্বিগুণবেতন=স্ক্যান ওবিজে।পরের ডাবল();

পদ্ধতিবাইরেprintln('নাম:' +নাম+ ', বয়স:' +বয়স+ ', বেতন:' +বেতন);

স্ক্যান ওবিজে।বন্ধ();
}
}

উপসংহার

জাভাতে স্ক্যানার হল java.util প্যাকেজের একটি ক্লাস। এই শ্রেণীর লক্ষ্য একটি স্ট্রিং, কীবোর্ড, ফাইল বা নেটওয়ার্ক সকেট থেকে ইনপুট পড়া। এই নিবন্ধটি প্রধানত কীবোর্ড থেকে ইনপুট পড়া এবং টার্মিনাল উইন্ডোতে ফলাফল প্রদর্শনের উপর মনোনিবেশ করেছে। স্ট্রিং, ফাইল বা নেটওয়ার্ক চ্যানেল থেকে ইনপুট পড়ার জন্য অনুরূপ ধারণা ব্যবহার করা যেতে পারে।

কীবোর্ড ইনপুটের পুরো লাইন পড়তে, NextLine () পদ্ধতি ব্যবহার করুন। একটি স্ট্রিং হিসাবে লাইনটি hasNext () এবং next () পদ্ধতি এবং while লুপ ব্যবহার করে টোকেনে বিভক্ত করা যেতে পারে। বিভাজনের জন্য ডিফল্ট ডিলিমিটার হল স্পেস, কিন্তু প্রোগ্রামার অন্য কিছু ডিলিমিটার বেছে নিতে পারেন। প্রয়োজনে while লুপ বন্ধ করতে Ctrl+z করতে ভুলবেন না। এই নিবন্ধে উল্লেখ করা হয়নি এমন অন্যান্য স্কিম ব্যবহার করে নেতৃস্থানীয় এবং পিছনের স্থানগুলি সরানো যেতে পারে। এই নিবন্ধে উল্লেখ করা হয়নি এমন অন্যান্য স্কিম ব্যবহার করে টোকেনগুলির বৈধতাও করা যেতে পারে।

নেক্সটবুলিয়ান (), নেক্সটবাইট (), নেক্সটইনট () ইত্যাদি ব্যবহার করে আদিম মানগুলো পড়া যেতে পারে।

জাভা স্ক্যানারের আরো অনেক পদ্ধতি আছে। যাইহোক, স্ক্যানারের মৌলিক ব্যবহার এই নিবন্ধে ব্যাখ্যা করা হয়েছে। একটি টোকেন নির্বাচন আসলে নিয়মিত এক্সপ্রেশন কৌশল ব্যবহার করে সম্পন্ন করা হয়। রেগুলার এক্সপ্রেশন টেকনিকের ব্যবহার হল আলোচনা, অন্য কিছু সময়ের জন্য।