1. বহু-পছন্দ অপারেটর:switch

জাভার আরেকটি আকর্ষণীয় অপারেটর রয়েছে যা এটি তার দাদাপিপি (C++) থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। আমরা switchবিবৃতি সম্পর্কে কথা বলছি. আমরা একে বহু-পছন্দের অপারেটরও বলতে পারি। এটা একটু কষ্টকর দেখায়:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

একটি অভিব্যক্তি বা পরিবর্তনশীল বন্ধনীর মধ্যে নির্দেশিত হয়। যদি এক্সপ্রেশনের মান হয় value1, জাভা মেশিন কার্যকর করা শুরু করে code1। যদি এক্সপ্রেশনটি সমান হয় value2, তাহলে এক্সিকিউশন লাফিয়ে যায় code2। যদি এক্সপ্রেশনটি সমান হয় value3, তাহলে code3নির্বাহ করা হয়।

উদাহরণ:

কোড কনসোল আউটপুট
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
High

2. breakবিবৃতি ইনswitch

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

উদাহরণ:

কোড কনসোল আউটপুট
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
}
Low
Normal
High

36-এর তাপমাত্রা দেওয়া হলে, প্রোগ্রামটি switchস্টেটমেন্টে প্রবেশ করবে, কোডের প্রথম ব্লকে (প্রথম ক্ষেত্রে) ঝাঁপ দেবে এবং কার্যকর করবে, এবং তারপর কোডের বাকি ব্লকগুলিকে আনন্দের সাথে চালাবে।

আপনি যদি শুধুমাত্র কোডের একটি ব্লক চালাতে চান — মিলিত ক্ষেত্রের সাথে যুক্ত কোডের ব্লক — তাহলে আপনাকে একটি breakবিবৃতি দিয়ে ব্লকটি শেষ করতে হবে ;

উদাহরণ:

কোড কনসোল আউটপুট
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
}
Low

breakআপনি স্টেটমেন্টের শেষ ক্ষেত্রে বাদ দিতে পারেন switch, যেহেতু সেই ব্লকটি ব্রেক স্টেটমেন্ট সহ বা ছাড়াই শেষ।


3. ডিফল্ট অ্যাকশন:default

আরেকটি গুরুত্বপূর্ণ পয়েন্ট। কি হবে যদি তালিকাভুক্ত কোনো ক্ষেত্রেই switchবন্ধনীর অভিব্যক্তির সাথে মেলে না?

যদি একটি ম্যাচিং কেস পাওয়া না যায়, তাহলে স্টেটমেন্টের বাকি অংশটি এড়িয়ে যাবে এবং বিবৃতিটি switchশেষ করার পর কোঁকড়া বন্ধনীর পরে প্রোগ্রামটি কার্যকর করা হবে ।switch

switchযে বলেন, আপনি একটি বিবৃতি একটি বিবৃতি অন্য শাখা মত আচরণ করতে পারেন if-else. এটি করতে, defaultকীওয়ার্ড ব্যবহার করুন।

caseযদি ব্লকের s-এর কোনোটিই switchএক্সপ্রেশনের মানের সাথে মেলে না এবং switchএকটি ব্লক থাকে default, তাহলে ডিফল্ট ব্লকটি কার্যকর করা হবে। উদাহরণ:

কোড কনসোল আউটপুট
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4. তুলনা switchএবংif-else

বিবৃতিটি switchকিছুটা বিবৃতির মতো if-else, কেবল আরও জটিল।

আপনি সর্বদা একাধিক বিবৃতি switchহিসাবে একটি বিবৃতির কোড পুনরায় লিখতে পারেন । ifউদাহরণ:

সুইচ সহ কোড if-else দিয়ে কোড করুন
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

বাম দিকের কোডটি ডানদিকের কোডের মতই কাজ করবে।

একাধিক if-elseস্টেটমেন্টের একটি চেইন বাঞ্ছনীয় যখন একটি ifবিবৃতি প্রতিটি পৃথক ক্ষেত্রে বিভিন্ন জটিল অভিব্যক্তি ধারণ করে।



5. একটি বিবৃতিতে কোন অভিব্যক্তি ব্যবহার করা যেতে পারে switch?

caseএকটি বিবৃতিতে সব ধরনের লেবেল হিসেবে ব্যবহার করা যাবে না switch। আপনি নিম্নলিখিত ধরনের আক্ষরিক ব্যবহার করতে পারেন:

  • পূর্ণসংখ্যার ধরন: byte, short, int,long
  • char
  • String
  • যে কোন enumপ্রকার

আপনি কেস লেবেল হিসাবে অন্য কোন প্রকার ব্যবহার করতে পারবেন না ।

enumএকটি বিবৃতি ভিতরে ব্যবহার করার উদাহরণ switch:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
      break;
   case TUESDAY:
      System.out.println("Tuesday");
      break;
   case WEDNESDAY:
      System.out.println("Wednesday");
      break;
   case THURSDAY:
      System.out.println("Thursday");
      break;
   case FRIDAY:
      System.out.println("Friday");
      break;
   case SATURDAY:
      System.out.println("Saturday");
      break;
   case SUNDAY:
      System.out.println("Sunday");
      break;
}

দ্রষ্টব্য: আপনি যদি একটি বিবৃতি enumভিতরে ব্যবহার করেন, তাহলে আপনাকে লেবেলের switchপ্রতিটি মানের সামনে ক্লাসের নাম লিখতে হবে না । caseশুধু মান লিখলেই যথেষ্ট।