بک لینک

به کارگیری String در دستور switch در قالب پروژه برنامه کد شهرهای ایران

java1

به نام خدا
آموزش بیستم
در آموزش های هجدهم و نوزدهم با نحوه به کاری گیری دستور switch آشنا شدیم. حال در
این آموزش قصد داریم تا با به کاری گیری متغیر char در فرمان switch آشنا شویم. در واقع
همانطور که در آموزش های پیشین عددی را وارد برنامه کردیم و بر اساس آن عدد جمله ای را
در بخش Console به نمایش در آوردیم، در این آموزش قصد داریم تا با وارد کردن یک
حرف یا کاراکتر این دستور را به برنامه خود بدهیم تا جمله خاصی را نمایش دهد. در آموزش
های پیشین ذکر شد که یکی از انواع متغیرها از نوع Primitive Type متغیر char می باشد که
برای نگهداری مقادیری همانند کاراکترها، عالئم و غیره مورد استفاده قرار می گیرد. برای شروع
20 به معنی “جلسه بیستم” ایجاد کرده و کالسی به نام th کار پروژه ای تحت عنوان Session
MySwitchClass می سازیم و به این شکل کار خود را آغاز می کنیم:
public class MySwitchClass {
public static void main(String args[]) {
}
}
توجه داشته باشیم که مقدار اختصاص داده شده به متغیر char بر خالف کالس String که
مابین دو عالمت ” ” قرار می گیرد، می بایست مابین دو عالمت ’ ’ قرار گیرد. از سوی دیگر
به جای مقدار این متغیر می توانیم از حروفی مثل G, b, z و یا عالئمی همچون $ ,@ وغیره نیز
استفاده کنیم)به خاطر داشته باشیم که به جای تعریف کردن Value متغیر char در خود برنامه،
می توانیم از کالس Scanner که در آموزش های پیشین به طور مفصل مورد بررسی قرار
گرفت نیز استفاده کنیم تا از آن طریق بتوانیم به طور دینامیک مقدار متغیر را وارد برنامه کنیم اما
در این آموزش به منظور جلوگیری از طوالنی شدن بحث از توضیح پیرامون جزئیات این کالس
خودداری خواهد شد و به عالقمندان به کسب اطالعات بیشتر پیرامون کالس Scanner پیشنهاد
می شود به آموزش های یازدهم، دوازدهم و سیزدهم مراجعه نمایند(.
حال ببینیم که به کارگیری ترکیب دستوراتی همچون switch به همراه متغیری از جنس char
چه کاربردی دارد. شاید بارها و بارها برای خیلی از ما پیش آمده باشد که خواسته باشیم به
صورت آنالین چیزی همچون یک نرم افزار خریداری نماییم. در واقع جایی در فرمی که می
بایست اطالعات خود را تکمیل کنیم به منظور انتخاب نحوه ارسال کاال در نظر گرفته شده است
که از شما می خواهد نحوه پست بسته سفارشی و همچنین نحوه پرداخت را مشخص کنید. به طور
مثال می توان سه گزینه را در نظر گرفت که عبارتند از گزینه A و گزینه B و گزینه C. در
حقیقت در توضیحات خرید آنالین آمده است که اگر شما گزینه A را انتخاب کنید بدان معنا
است که “بسته پستی شما از طریق پست پیشتاز برای شما ارسال خواهد شد و مبلغ
هم پس از تحویل کاال توسط پستچی دریافت خواهد شد”. گزینه B بدان معنا است
که “بسته پستی شما از طریق پست عادی ارسال خواهد شد و مبلغ هم پس از
تحویل کاال توسط پستچی دریافت خواهد شد”. در نهایت در توضیحات گزینه C آمده
است که ما “می توانیم به صورت آنالین هزینه را پرداخت کرده و با دریافت لینک،
نرم افزار مد نظر را دانلود نماییم”.
در اینجا است که می توانیم اهمیت این آموزش را به طور عملی مشاهده کنیم. برای روشن شدن
مطلب، سناریوی فوق را به یک برنامه کامالً عملی تبدیل خواهیم کرد. برای این منظور کد خود
را به شکل زیر تکمیل می کنیم:دوره آموزش جاوا
کلیه حقوق متعلق به وب سایت نردبان است.
مدرس: بهزاد مرادی
Page
3
import java.util.Scanner;
public class MySwitchClass {
public static void main(String args[]) {
System.out.print(“Please choose which type of mail would you
like? “);
Scanner typeSelection = new Scanner(System.in);
char typeChosen = typeSelection.next().charAt(0);
char toUpperCase = Character.toUpperCase(typeChosen);
switch (toUpperCase) {
case ‘A’ :
System.out.println(“You will get your package via express mail
\nand you have to pay to the postman.”);
break;
case ‘B’ :
System.out.println(“You will get your package via ordinary mail
\nand you have to pay to the postman.”);
break;
case ‘C’ :
System.out.println(“You have to pay via Internet bank and \ndownload
your software via Internet”);
break;
default :
System.out.println(“Sorry, It seems that there is a problem,\nplease
give it another try!”);
break;
}
}
}
اولین دستوری که در کد باال به کامپیوتر می دهیم این است که جمله Please choose
?which type of main would you like به معنی “لطفا مشخص کنید چه نوع
پستی را تمایل دارید استفاده کنید؟” را روی صفحه مانیتور نمایش دهد. سپس یک
Instance یا “نمونه ای” از کالس Scanner تحت عنوان typeSelection به معنی
“انتخاب نوع ارسال” ایجاد می کنیم. حال برای اینکه بتوانیم از طریق کیبورد سه حرف ,A
B, C را دریافت کنیم نیاز داریم تا متغیری از جنس char ایجاد کنیم. نام متغیر char را
typeChosen به معنی “نوع انتخاب شده” می گذاریم و به جای آنکه مقداری برای آن
تعریف کنیم، دستور می دهیم تا هرآنچه کالس Scanner از طریق کیبورد دریافت می دارد به
متغیر ما به عنوان مقدار اختصاص یابد. برای این منظور پس از عالمت = که مقابل نام متغیر char
قرار دارد، نام شیئی از کالس Scanner که قبال ایجاد کرده بودیم را می نویسیم. حال مقابل نام
کالس Scanner می بایست از دو متد دیگر استفاده کنیم. متد اول ()next نام دارد که این
دستور را به برنامه می دهد تا ورودی از هر جنس را از کیبورد را دریافت کند)برای آشنایی بیشتر
با انواع متدهای کالس Scanner به آموزش دوازدهم مراجعه نمایید(. حال نوبت به نوشتن متد
دوم می رسد که ()charAt می باشد. در واقع کاری که این متد انجام می دهد این است که
کاراکتری را در موقعیت مشخصی را دریافت کند. مثالً اگر ورودی از کیبورد کاراکترهای
ABCD باشد و متد (charAt(2 فرا خوانده شود نرم افزار کاراکتر C را از میان دیگر
کاراکترها برمی گزیند)الزم به ذکر است که در کاراکترها اولین جایگاه به عدد “صفر” تعلق
دارد از همین رو است که وقتی عدد 2 را فرا می خوانیم به جای آنکه کاراکتر B دریافت شود،
کاراکتر C دریافت می شود زیرا که جایگاه حرف اول که A می باشد صفر بوده، جایگاه حرف
دوم که B می باشد یک بوده، جایگاه حرف سوم که C می باشد دو می باشد و الی آخر(. در این
برنامه که ما طراحی می کنیم می بایست متد (charAt(0 فرا خوانده شود چرا که ما نیاز داریم تا
کاربر یک کاراکتر را وارد سازد و بالتبع اولین کاراکتری که کاربر وارد می سازد را کامپیوتر مد
نظر قرار دهد و جایگاهش صفر است. حال نکته ای که در اینجا می بایست مد نظر قرار داد این
است که چنانچه کاربر کاراکتر مد نظر خود را با حرف بزرگ و یا کوچک بنویسد، برنامه
حروف کوچک و بزرگ را به معانی مختلفی برای خود تفسیر می کند. به عبارت دیگر معنای
کاراکتر A با معنا کاراکتر a فرق خواهد کرد و این در حالی است که برخی از کاربران ممکن
است نوع سفارش خود را با حرف مثالً B مشخص کنند و برخی دیگر با حرف b که در این
صورت برنامه ما با مشکل مواجه خواهد شد)قبال بارها و بارها توضیح داده ایم که زبان برنامه
نویسی جاوا Case Sensitive است یعنی به حروف بزرگ و کوچک حساس می باشد(. برای
رفع این مشکل یک متغیر دیگر از جنس char تعریف کرده و نام آن را toUpperCase به
معنی “تبدیل به حروف بزرگ” می گذاریم. در واقع با اینکار هر کاراکتری که کاربران وارد
کنند چه حرف بزرگ باشد و چه حرف کوچک به حروف بزرگ تبدیل خواهند شد. حال برای
تعیین مقدار این متغیر جدید از متد دیگری تحت عنوان
()Character.toUpperCase استفاده می کنیم. کاری که این متد انجام می دهد
این است که هر پارامتری را که برای این متد داخل پرانتز قرار دهیم را به حرف بزرگ تبدیل می
کند. برای ادامه نام متغیر اول خود که typeChosen بود را داخل پرانتز نوشته و متد ما به شکل
(Character.toUpperCase(typeChosen در خواهد آمد)الزم به ذکر است
متدی که کلیه کاراکتر ها را به حروف کوچک تبدیل می کند نیز
()Character.toLowerCase می باشد(. به طور خالصه متغیر اول ما مقدار خود را
از طریق کیبورد و با استفاده از کالس Scanner دریافت می دارد سپس مقدار دریافتی خود را
به متغیر دوم منتقل می کند که وظیفه آن تبدیل کاراکتر ها به حروف بزرگ می باشد. از این پس
متغیر مورد استفاده ما در ادامه این برنامه متغیر دوم خواهد بود. حال یک switch تعریف کرده و
پارامتر ورودی آن را متغیر دومی که ایجاد کردیم یا همان toUpperCase قرار می دهیم. از
اینجای کار به بعد همانند آموزش پیشین خواهد بود یعنی به هر تعداد که بخواهیم شرط از نوع
case ایجاد می کنیم و مقدار آن را داخل دو عالمت ’ ’ قرار می دهیم سپس بعد از آن یک
عالمت : قرار می دهیم و در نهایت دستوری که می خواهیم در صورت true بودن شرط اجرا
شود را نوشته و در نهایت دستور ;break را اجرا می کنیم. به طور خالصه کد به شکل زیر
خواهد بود:
case ‘A’:
System.out.println(“Some action”);
break;
در واقع از آنجا که در سناریو این آموزش ما 3 حالت بیشتر نداریم، سه شرط تحت عناوین
: ‘case ‘A و : ‘case ‘B و : ‘case ‘C ایجاد می کنیم. حال به برنامه خود
دستور می دهیم که اگر شرط A صحیح بود جمله You will get your
package via express mail \nand you have to pay to
.the postman به معنی “شما بسته پستی خود را از طریق پست پیشتاز دریافت
خواهید کرد و می بایست هزینه را به پستجی تحویل دهید”. نمایش داده شود. اگر
You will get your package via جمله بود صحیح B شرط
ordinary mail \nand you have to pay to the postman.
به معنی “شما بسته پستی خود را از طریق پست معمولی دریافت خواهید کرد و می
بایست هزینه را به پستچی تحویل دهید”. نمایش داده خواهد شد. در نهایت کاربر اگر
You have to pay via Internet bank جمله نماید انتخاب را C گزینه
شما” معنی به and \ndownload your software via Internet
می بایست از طریق اینترنت بانک پرداخت خود را انجام دهید و نرم افزار خود
را نیز از طریق اینترنت دانلود نمایید”. نمایش داده خواهد شد. همانطور که در جلسه
آموزش پیشین توضیح داده شود، زمان هایی وجود دارد که کاربر گزینه ای نادرست وارد می
کند مثال به جای کاراکتر های تعریف شده A, B, C کاراکتر F را وارد می سازد و یا این
بخش را کالً خالی می گذارد که در این حالت می بایست دستور default را نیز مورد
استفاده قرار داد تا در چنین مواقعی به کاربر اخطاری که تمایل داریم را منعکس کنیم برای همین
Sorry, It seems that there is a جمله default بخش در منظور
به ،ببخشید” معنی به problem,\nplease give it another try!
نظر می رسد که مشکلی رخ داده است، لطفاً مجدداً سعی نمایید!” به نمایش در آید.
حال پس از اجرای برنامه تصویر زیر مشاهده خواهد شد:
حال با کلیک کردن در بخش Console و وارد کردن یکی از سه گزینه A, B, C برنامه
دستور مناسب را اجرا خواهد کرد. به طور نمونه در این جا کاراکتر C را وارد می کنیم و نتیجه
زیر مشاهده خواهد شد:
اگر به تصویر فوق با دقت نگاه کنید، مشاهده خواهید کرد که کاراکتر c به صورت کوچک
نوشته شده است و این در حالی است که در شرط ‘case ‘C به برنامه خود دستور داده ایم
که اگر کاراکتر ورودی حرف C بزرگ بود دستور مرتبط را اجرا کند. در اینجا است که به
اهمیت متغیر دوم char که تعریف کردیم پی می بریم چرا که وظیفه این متغیر است که کلیه
کاراکتر ها را به حروف بزرگ تبدیل کند تا در این مرحله از برنامه ما به هیچ مشکلی بر نخوریم.
حال ببینیم اگر کاراکتر تعریف نشده ای را وارد برنامه کنیم چه خروجی دریافت خواهیم کرد:
در واقع برنامه ما در این موقع به این شکل عمل می کند که اول سراغ شرط A می رود و می بیند
که این شرط false است، سپس سراغ شرط B می رود و می بیند که باز هم نتیجه false است و
در آخر به سراغ شرط C می رود که باز هم نتیجه false است. در این مرحله ما از قبل به برنامه
خود دستور داده ایم که اگر هیچ کدام از شروط برآورده نشد به سراغ شرط default برود و آن
را اجرا کند.
به عنوان آخرین نکته به این مطلب اشاره می کنیم که در کد خود در جمالتی که به عنوان
خروجی شروط تعریف کردیم از عبارت n\ استفاده کردیم که همانطور که در جلسات پیشین
توضیح داده شد وظیفه این عبارت آن است که از جایی که قرار می گیرد به بعد را به خط بعد
منتقل می کند و علت استفاده از این دستور صرفاً سهولت در مشاهده کل متن می باشد.
در آموزش بعدی پیرامون ارتباط String با دستور switch بحث خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *