0

آموزش برنامه نویسی جاوا

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی جاوا - قسمت ۲۱: به کارگیری کلاس String در قالب پروژه برنامه کد شهرهای ایران
سه شنبه 1 بهمن 1392  7:55 AM

پس از آشنایی با نحوه به کارگیری متغیر char به همراه switch در این آموزش قصد داریم تا به بررسی این مطلب بپردازیم که چگونه می توان کلاس String را به همراه دستورات شرطی switch مورد استفاده قرار داد. همچون روال گذشته، قصد داریم تا به منظور درک بهتر مطالب آموزشی یک سناریو تعریف کنیم که در آن برنامه ای کاربردی از ادغام String و switch خواهیم نوشت.

با نگاهی به آدرس اینترنتی http://www.countrycallingcodes.com با وب سایتی مواجه خواهیم شد که با تعیین نام کشورها، استان ها و همچنین شهرها پیش شماره کشور، استان و یا شهر مد نظر را به ما نشان می دهد. در این آموزش قصد داریم تا چنین پروژه ای را تعریف کنیم به این صورت که با نوشتن نام یکی از شهرهای ایران، نرم افزار پیش شماره تلفن آن شهر را به ما نشان دهد. به عبارت دیگر کاری که ما در این برنامه انجام خواهیم داد این است که داده ای از جنس string وارد برنامه می کنیم، سپس با استفاده از دستوراتی که از قبل در switch تعریف کرده ایم کامپیوتر پیش شماره آن شهر را به ما اعلام می کند.

ادامه مطلب را از دست ندهید.

نکته ای که پیش از شروع آموزش می بایست حتماً مد نظر قرار دهیم این است که به کاری گیری string ها در switch در نسخه 7 جاوا امکان پذیر شده است. بنابراین ما برای طراحی این نرم افزار نیاز داریم تا از قبل نسخه JDK 7 را نصب کرده باشیم. برای اینکه اطمینان حاصل کنیم که نسخه 7 روی کامپیوتر یا لپ تاپ ما نصب است به کنترل پنل رجوع کرده و روی آیکان Java کلیک می کنیم. سپس پنجره ای همچون پنجره زیر نمایان خواهد شد:


920327-21-IMAGE 1.jpg

در پنجره فوق روی دکمه About کلیک نموده سپس پنجره بعدی به شکل زیر ظاهر می شود:


920327-21-IMAGE 2.jpg

در این پنجره به وضوح نسخه جاوا نصب شده روی سیستم مشخص می باشد(در صورت نداشتن نسخه 7، این نسخه را می توان از لینک http://java.com/en/download/index.jsp دانلود نمود). حال که از نصب نسخه جاوا 7 روی سیستم مطمئن شدیم نوبت به تنظیم محیط برنامه نویسی اکلیپس برای استفاده از جاوا 7 می رسد. در واقع ما می توانیم به طور هم زمان چندین نسخه جاوا را روی سیستم خود داشته باشیم فقط نکته ای که نمی بایست فراموش کنیم این است که به اکلیپس دستور دهیم از کدام نسخه استفاده کند. به منظور دستور دادن به محیط برنامه نویسی اکلیپس برای استفاده از نسخه خاصی از JDK به بخش آموزشی اول از این سری از آموزش ها مراجعه نمایید. ایجاد یک پروژه برای این آموزش با ایجاد پروژه برای آموزش های پیشین کمی متفاوت است. در واقع در پنجره ای که برای ساخت یک پروژه جدید جاوا باز می شود می بایست از میان نسخه های JRE موجود نسخه 7 را انتخاب کنیم همانطور که در تصویر زیر قابل مشاهده است:


920327-21-IMAGE 3.jpg

حال پس از انتخاب نام 21st Session به معنی "جلسه بیست و یکم" به عنوان نام پروژه خود دکمه Finish را زده و سپس همانطور که قبلاً آموزش داده شده است یک کلاس جدید تحت عنوان CityCode به معنی "کد شهر" در آن ایجاد می کنیم. حال برای آنکه بتوانیم به صورت دینامیک مقادیر string را وارد کنیم می بایست از کلاس Scanner استفاده نماییم(جهت آشنایی با این کلاس، علاقمندان می توانند به آموزش های یازدهم، دوازدهم و سیزدهم مراجعه کنند). حال کد نیمه تکمیل ما به شکل زیر خواهد بود:


  1. import java.util.Scanner;
  2. public class CityCode {
  3. public static void main(String[] args) {
  4. Scanner keyboardInput = new Scanner(System.in);
  5. String cityName = keyboardInput.next();
  6. }
  7. }

در کد فوق ما یک Instance یا "نمونه" از کلاس Scanner ایجاد کرده و نام آن را keyboardInput به معنی "ورودی کیبورد" گذاشته ایم. سپس یک کلاس از جنس String ایجاد کرده و نام آن را cityName به معنی "نام شهر" می گذاریم. در این مرحله به جای آنکه مقداری برای کلاس String تعریف کنیم، دستور می دهیم تا با استفاده از کلاس Scanner هر آنچه که از طریق کیبورد وارد برنامه شد به کلاس String ما اختصاص یابد. در واقع متد next() این وظیفه را دارا است تا ورودی هایی از هر جنس را از کیبورد دریافت کند. حال نیاز است تا switch را به شکلی تعریف کنیم که Value کلاس String را گرفته و بر اساس آن نام شهر مرتبط را روی صفحه نمایش نشان دهد. برای این منظور کد فوق را به شکل زیر تکمیل می کنیم:

  1. import java.util.Scanner;
  2. public class CityCode {
  3. public static void main(String[] args) {
  4.  
  5. System.out.print("Please Type the Name of the City ");
  6. Scanner keyboardInput = new Scanner(System.in);
  7. String cityName = keyboardInput.next();
  8. switch (cityName) {
  9. case "mashhad" :
  10. System.out.println("Mashhad Code Is 0511");
  11. break;
  12. case "arak" :
  13. System.out.println("Arak Code Is 0861");
  14. break;
  15. case "abadan" :
  16. System.out.println("Abadan Code Is 0631");
  17. break;
  18. case "tehran" :
  19. System.out.println("Tehran Code Is 021");
  20. break;
  21. case "amol" :
  22. System.out.println("Amol Code Is 0121");
  23. break;
  24. case "chabahar" :
  25. System.out.println("Chabahar Code Is 0545");
  26. break;
  27. case "sanandaj" :
  28. System.out.println("Sanandaj Code Is 0871");
  29. break;
  30. default :
  31. System.out.println("Sorry, This City Is Not Defined!");
  32. break;
  33.  
  34. }
  35. }
  36. }
  37.  
  38.  

در حقیقت از آنجا که می خواهیم دستور switch مقدار کلاس String را مورد سنجش قرار دهد، می بایست داخل پرانتز مقابل switch نام شیئی که از روی کلاس String ساختیم یا همان cityName را وارد کنیم. حال به منظور روشن تر شدن کد فوق به طور نمونه یکی از case ها را مورد بررسی قرار می دهیم. اولین گزینه که case "mashhad" : نام دارد حاکی از این شرط است که ببیند آیا مقدار داده ورودی از طریق کیبورد معادل با واژه mashhad است یا خیر، چنانچه پاسخ به این شرط true بود سپس دستور System.out.println("Mashhad Code Is 0511"); مبنی بر نوشتن جمله Mashhad Code Is 0511 به معنی "کد مشهد 0511 است" اجرا خواهد شد و در نهایت به دستور break; می رسد که بدان معنا است که از برنامه خارج شود. حال اگر داده ورودی معادل با این شرط نبود، شروط قرار گرفته در این switch یکی پس از دیگری اجرا می شوند و چنانچه هیچ کدام از case ها معادل با داده ورودی نبود دستور default اجرا خواهد شد. به عنوان نمونه برنامه را اجرا می کنیم و شهر اراک را وارد کرده و دکمه Enter را می زنیم(توجه نمایید که کلمه اراک به حرف کوچک تایپ شده است):

920327-21-IMAGE 40.jpg

خواهیم دید که برنامه به درستی پاسخ ما را خواهد داد. حال اگر شهری را بزنیم که در لیست وارد نشده است، برنامه گزینه default را اجرا خواهد کرد. به مثال زیر توجه کنید:

920327-21-IMAGE 50.jpg

می بینیم که عبارت Sorry, This City Is Not Defined! به معنی "متاسفیم، کد این شهر وارد برنامه نشده است" روی صفحه نمایش نشان داده خواهد شد. اگر توجه کرده باشید در مثالی که شهر اراک را وارد کردیم واژه arak به این شکل نوشته شده است که حرف اول آن کوچک است. حال ببینیم اگر این کلمه را به حرف بزرگ بنویسیم چه اتفاقی خواهد افتاد:

920327-21-IMAGE 6.jpg

می بینیم که برنامه نمی تواند تشخیص دهد که واژه Arak در عالم واقعیت همان arak است و این دو را دو Entity یا "هویت" مجزا می شناسد. برای رفع این مشکل یا می توانیم از کاربر خود بخواهیم که نام شهر خود را با حرف کوچک حتماً شروع کند و یا یک تغییر جزئی کوچک در برنامه خود ایجاد کنیم. از آنجا که گزینه دوم هم اصولی تر است و هم بار آموزشی دارد ما گزینه دوم را انتخاب خواهیم کرد. در واقع با اضافه کردن cityName = cityName.toLowerCase(); پس از جایی که String برنامه را تعریف کرده ایم این دستور را به برنامه خود می دهیم که مقدار کلاس String برنامه ما که cityName نام دارد می بایست به هر شکلی که وارد برنامه شود در نهایت به حروف کوچک تبدیل شود. به عبارت دیگر می گوییم که کلاس cityName عبارت است از cityName.toLowerCase(); یعنی یک cityName که حروف آن همگی کوچک شده باشند و از آنجا که حروف واژگانی که در switch تعریف شده اند همگی کوچک هستند(مثل mashhad ) برنامه با هیچ گونه مشکلی مواجه نخواهد شد. اکنون کد ما می بایست به شکل زیر درآید:

  1. import java.util.Scanner;
  2. public class CityCode {
  3. public static void main(String[] args) {
  4.  
  5. System.out.print("Please Type the Name of the City ");
  6. Scanner keyboardInput = new Scanner(System.in);
  7. String cityName = keyboardInput.next();
  8. cityName = cityName.toLowerCase();
  9. switch (cityName) {
  10. case "mashhad" :
  11. System.out.println("Mashhad Code Is 0511");
  12. break;
  13. case "arak" :
  14. System.out.println("Arak Code Is 0861");
  15. break;
  16. case "abadan" :
  17. System.out.println("Abadan Code Is 0631");
  18. break;
  19. case "tehran" :
  20. System.out.println("Tehran Code Is 021");
  21. break;
  22. case "amol" :
  23. System.out.println("Amol Code Is 0121");
  24. break;
  25. case "chabahar" :
  26. System.out.println("Chabahar Code Is 0545");
  27. break;
  28. case "sanandaj" :
  29. System.out.println("Sanandaj Code Is 0871");
  30. break;
  31. default :
  32. System.out.println("Sorry, This City Is Not Defined!");
  33. break;
  34.  
  35. }
  36. }
  37. }
  38.  
  39.  

به عنوان نمونه شهر دیگری را امتحان می کنیم:

920327-21-IMAGE 7.jpg

در مثال فوق می بینیم که شهر چابهار به شکل chaBaHaR نوشته شده است اما از آنجا که متد .toLowerCase() کلیه حروف را به کوچک تبدیل می کند می توانیم این اطمینان را داشته باشیم که واژه chaBaHaR به chabahar تبدیل شده که جواب شرط case "chabahar" : به آن نیز true خواهد بود.

تشکرات از این پست
دسترسی سریع به انجمن ها