CodeGym/Java Blog/এলোমেলো/জাভা স্ক্যানার ক্লাস
John Squirrels
লেভেল 41
San Francisco

জাভা স্ক্যানার ক্লাস

এলোমেলো দলে প্রকাশিত
সদস্যগণ
ওহে! আমাদের আজকের পাঠ বিশেষ হবে! আজকের পাঠে, আমরা জাভা স্ক্যানার ক্লাস সম্পর্কে কথা বলব। পূর্বে, কাজগুলি সম্পূর্ণ করার এবং প্রোগ্রাম লেখার প্রক্রিয়াটি সহজ ছিল: আমরা কিছু কোড লিখি, প্রধান() চালাইপদ্ধতি, প্রোগ্রাম যা প্রয়োজন তা করে, এবং আমরা সম্পন্ন করেছি। কিন্তু এখন সব বদলে যাবে! আজ আমরা শিখব কিভাবে সত্যিই প্রোগ্রামের সাথে ইন্টারঅ্যাক্ট করতে হয়: আমরা আমাদের ক্রিয়াকলাপের প্রতিক্রিয়া জানাব! আমরা কোড বিশ্লেষণ শুরু করার আগে, আপনি কি কখনও একটি স্ক্যানার মত একটি ডিভাইস মোকাবেলা করতে হয়েছে? সম্ভবত। একটি স্ক্যানারের অভ্যন্তরীণ অংশগুলি বেশ জটিল, তবে এটি কীভাবে কাজ করে তার প্রাথমিক ধারণাটি খুবই সহজ: এটি ব্যবহারকারীর প্রদান করা ডেটা পড়ে (যেমন একটি পাসপোর্ট বা বীমা নীতি) এবং এই তথ্যগুলি মেমরিতে সংরক্ষণ করে (উদাহরণস্বরূপ, একটি চিত্র হিসাবে) ) আজ আপনি আপনার নিজস্ব স্ক্যানার তৈরি করতে যাচ্ছেন! অবশ্যই, এটি কাগজের নথিগুলি পরিচালনা করতে সক্ষম হবে না, তবে পাঠ্য এটির জন্য কোনও সমস্যা হবে না :) চলুন!

জাভা এর স্ক্যানার ক্লাস

স্ক্যানার ক্লাস- ১টিপ্রথম এবং সর্বাগ্রে, আমাদের অবশ্যই java.util.Scanner ক্লাসের সাথে পরিচিত হতে হবে। এর কার্যকারিতা খুবই সহজ। একটি বাস্তব স্ক্যানারের মতো, এটি আপনার নির্দিষ্ট করা একটি উত্স থেকে ডেটা পড়ে৷ উদাহরণস্বরূপ, একটি স্ট্রিং, একটি ফাইল, কনসোল। এর পরে, এটি তথ্যকে স্বীকৃতি দেয় এবং এটি যথাযথভাবে প্রক্রিয়া করে। এখানে সবচেয়ে সহজ উদাহরণ:
public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("It matters not how strait the gate,\n" +
               "How charged with punishments the scroll,\n" +
               "I am the master of my fate,\n" +
               "I am the captain of my soul");
       String s = scanner.nextLine();
       System.out.println(s);
   }
}
আমরা একটি স্ক্যানার অবজেক্ট তৈরি করেছি এবং এর ডেটা উৎস (পাঠ্যের একটি স্ট্রিং) নির্দিষ্ট করেছি। নেক্সটলাইন () পদ্ধতি ডেটা সোর্স অ্যাক্সেস করে (একটি কোয়াট্রেন সহ আমাদের পাঠ্য), পরবর্তী অপঠিত লাইনটি খুঁজে পায় (যা এই ক্ষেত্রে প্রথম লাইন), এবং এটি ফেরত দেয়। তারপরে আমরা এটি কনসোলে প্রদর্শন করি: কনসোল আউটপুট:
It matters not how strait the gate,
আমরা nextLine() পদ্ধতিটি বেশ কয়েকবার ব্যবহার করতে পারি এবং সম্পূর্ণ কবিতার অংশটি প্রদর্শন করতে পারি:
public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("It matters not how strait the gate,\n" +
               "How charged with punishments the scroll,\n" +
               "I am the master of my fate,\n" +
               "I am the captain of my soul");
       String s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
   }
}
প্রতিবার, আমাদের স্ক্যানার এক ধাপ এগিয়ে নিয়ে যায় এবং পরবর্তী লাইনটি পড়ে। প্রোগ্রামের আউটপুট প্রদর্শিত হয়:
It matters not how strait the gate,
How charged with punishments the scroll,
I am the master of my fate,
I am the captain of my soul
আমরা ইতিমধ্যেই বলেছি, স্ক্যানারের ডেটা উৎস একটি স্ট্রিং হতে হবে না। উদাহরণস্বরূপ, এটি কনসোল হতে পারে। আপনার জন্য কিছু উত্তেজনাপূর্ণ খবর: আগে, আমরা সেখানে শুধু ডেটা প্রদর্শন করতাম, কিন্তু এখন আমরা কীবোর্ড থেকে ডেটা পড়ব! আসুন দেখি স্ক্যানার ক্লাস আর কি করে:
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

   }
}
NextInt () পদ্ধতিটি প্রবেশ করা নম্বরটি পড়ে এবং ফেরত দেয়। আমাদের প্রোগ্রামে, আমরা ভেরিয়েবল সংখ্যার একটি মান নির্ধারণ করতে এটি ব্যবহার করি । এটি ইতিমধ্যে একটি বাস্তব স্ক্যানার মত আরো! প্রোগ্রাম ব্যবহারকারীকে যেকোনো নম্বর লিখতে বলে। ব্যবহারকারী এটি করার পরে, প্রোগ্রামটি ব্যবহারকারীকে ধন্যবাদ জানায়, ফলাফল প্রদর্শন করে এবং শেষ করে। কিন্তু আমরা এখনও একটি গুরুতর সমস্যা আছে. ব্যবহারকারী একটি ভুল করতে পারে এবং কিছু ভুল লিখতে পারে। এখানে একটি উদাহরণ যেখানে আমাদের বর্তমান প্রোগ্রাম কাজ করা বন্ধ করে দেয়:
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

   }
}
আসুন একটি সংখ্যার পরিবর্তে "CodeGym" স্ট্রিং প্রবেশ করার চেষ্টা করি: কনসোল আউটপুট:
Enter a number:
CodeGym
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:10) Process finished with exit code 1
আহ ওহ. আমরা বড় সমস্যায় আছি -_- এই ধরনের পরিস্থিতি এড়াতে, ব্যবহারকারীর দ্বারা প্রবেশ করা ডেটা যাচাই করার জন্য আমাদের একটি উপায় নিয়ে আসতে হবে। উদাহরণস্বরূপ, যদি ব্যবহারকারী একটি সংখ্যা ছাড়া অন্য কিছু প্রবেশ করে, তাহলে একটি সতর্কতা প্রদর্শন করা ভাল হবে যে প্রবেশ করা তথ্যটি একটি সংখ্যা নয়। এবং যদি তথ্য ঠিক থাকে, তাহলে আমরা নিশ্চিত করতে পারি। কিন্তু এর জন্য আমাদের প্রবাহে কী আসছে তা দেখতে আমাদের "ভবিষ্যতের দিকে তাকাতে হবে"। স্ক্যানার কি এটা করতে পারে ? এবং কিভাবে! এবং এটি করার জন্য এটির বেশ কয়েকটি পদ্ধতি রয়েছে: hasNextInt() — এই পদ্ধতিটি ইনপুট ডেটার পরবর্তী অংশটি একটি সংখ্যা কিনা তা পরীক্ষা করে (যথাযথ সত্য বা মিথ্যা ফেরত দেয়)। hasNextLine() — এই পদ্ধতিটি ইনপুটের পরবর্তী অংশটি একটি স্ট্রিং কিনা তা পরীক্ষা করে। hasNextByte() ,hasNextShort() , hasNextLong() , hasNextFloat() , hasNextDouble() — এই সমস্ত পদ্ধতি অবশিষ্ট ডেটা প্রকারের জন্য একই রকম পরীক্ষা করে। আসুন আমাদের নম্বর-রিডিং প্রোগ্রাম পরিবর্তন করার চেষ্টা করি:
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       if (sc.hasNextInt()) {
           int number = sc.nextInt();
           System.out.println("Thanks! You entered the number " + number);
       } else {
           System.out.println("Sorry, but this is clearly not a number. Restart the program and try again!");
       }

   }
}
এখন আমাদের প্রোগ্রাম পরীক্ষা করে যে পরবর্তী অক্ষরটি একটি সংখ্যা কিনা। এবং এটি শুধুমাত্র যদি তা নিশ্চিতকরণ প্রদর্শন করে। যদি ইনপুট চেকটি পাস না করে, প্রোগ্রামটি নোট নেয় এবং ব্যবহারকারীকে আবার চেষ্টা করতে বলে। মূলত, আপনি স্ক্যানার অবজেক্টের সাথে যোগাযোগ করতে পারেন এবং আপনার জন্য কোন ডেটা টাইপ অপেক্ষা করছে তা আগে থেকেই খুঁজে বের করতে পারেন । একটি সংখ্যা, স্ট্রিং, বা অন্য কিছু? একটি সংখ্যা? এবং কি ধরনের? একটি int , সংক্ষিপ্ত , দীর্ঘ ?" এই নমনীয়তা আপনাকে প্রোগ্রাম লজিক তৈরি করার সুযোগ দেয় যা ব্যবহারকারীর আচরণের উপর নির্ভর করে। আমাদের আরেকটি গুরুত্বপূর্ণ পদ্ধতি নোট করা উচিত: useDelimiter() । আপনি এই পদ্ধতিতে একটি স্ট্রিং পাস করেন। স্ট্রিংটিতে রয়েছে আপনি বিভাজক বা বিভাজক হিসাবে ব্যবহার করতে চান অক্ষর. উদাহরণস্বরূপ, ধরুন আমরা হঠাৎ জাপানি কবিতায় আগ্রহী হয়ে উঠলাম, এবং মহান কবি মাতসুও বাশোর লেখা কিছু হাইকু পড়ার জন্য আমাদের স্ক্যানার ব্যবহার করার সিদ্ধান্ত নিয়েছি। এমনকি যদি তিনটি ভিন্ন পদ আমাদের কাছে একটি বিশ্রী স্ট্রিং হিসাবে প্রেরণ করা হয়, আমরা সহজেই সেগুলিকে বিভক্ত করতে পারি এবং সুন্দরভাবে রেন্ডার করতে পারি:
public class Main {
   public static void main(String[] args) {
       Scanner scan = new Scanner("On a withered branch'" +
               "A crow has alighted.'" +
               "Nightfall in autumn." +
               "''***''" +
               "Such a moon above,'" +
               "Like a tree cut at the root:'" +
               "he fresh cut is white." +
               "''***''" +
               "How the river floods!'" +
               "A heron wanders on short legs,'" +
               "Knee-deep in the water.");

       scan.useDelimiter("'");

       while (scan.hasNext()) {
           System.out.println(scan.next());
       }

       scan.close();
   }
}
আমরা আমাদের ডিলিমিটার হিসাবে "\ n /*/*/*" (নতুন লাইনের অক্ষর এবং তিনটি তারকাচিহ্ন) ব্যবহার করি। ফলস্বরূপ, বইগুলির মতো আমাদের কাছে সুন্দর কনসোল আউটপুট রয়েছে:
On a withered branch
A crow has alighted.
Nightfall in autumn.

***

Such a moon above,
Like a tree cut at the root:
The fresh cut is white.

***

How the river floods!
A heron wanders on short legs,
Knee-deep in the water.
এই উদাহরণে আরও একটি পদ্ধতি রয়েছে যা আমাদের অবশ্যই উল্লেখ করতে হবে: close() । I/O স্ট্রীমগুলির সাথে কাজ করা যেকোন বস্তুর মতো, স্ক্যানারটি বন্ধ করা আবশ্যক যখন এটি করা হয় যাতে এটি কম্পিউটারের সংস্থানগুলি ব্যবহার করা বন্ধ করে। ক্লোজ() পদ্ধতিটি কখনই ভুলবেন না !
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter a number:");

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

       sc.close(); // Now we've done everything right!

   }
}
এটাই! আপনি দেখতে পাচ্ছেন, এটি কতটা সহায়ক, স্ক্যানার ক্লাসটি ব্যবহার করা বেশ সহজ! :) আপনি যা শিখেছেন তা শক্তিশালী করার জন্য, আমরা আপনাকে আমাদের জাভা কোর্স থেকে একটি ভিডিও পাঠ দেখার পরামর্শ দিই
মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই