IF … ELSE
به جای استفاده از دو IF، می توان از یک IF…ELSE استفاده کرد. ساختار IF…ELSE را مشاهده کنید:
if(شرط){ } else{ }
اولین خط با کلمه if شروع می شود و در مقابل آن هم شرط مورد نظر، میان دو پرانتز نوشته می شود. دوباره از براکت برای نوشتن هر قطعه کد استفاده می شود. دومین قطعه کد هم بعد از کلمه else و در میان دو براکت نوشته می شود. این ساختار بدین گونه کار می کند که اگر شرط، برقرار باشد که قطعه کد روبروی if ، اجرا خواهد شد و اگر شرط برقرار نباشد در این صورت، قطعه کد روبروی واژه else اجرا می شود. کد بخش قبل را این بار با استفاده از این ساختار می نویسیم:
پس اینجا فقط دو انتخاب وجود دارد، یا مقدار کوچکترمساوی ۱۸ است یا نه، که برای هر انتخاب یک قطعه کد نوشته شده است. کد بالا را نوشته و اجرا کنید و عدد ۱۷ را به اعداد دیگر تغییر دهید و نتیجه را ببینید، برای مثال اگر عدد ۲۰ را در user ذخیره کرده باشید، قطعه کد روبروی else اجرا می شود و پیغام User is older than 18 چاپ خواهد شد.
IF …. ELSE IF
این بار می خواهیم بیش از یک انتخاب را امتحان کنیم. برای مثال اگر بخواهیم رده های سنی بیشتری را چک کنیم باید از این ساختار استفاده کنیم. مثلا بخواهیم برای افراد زیر ۱۸ سال یک پیغام، برای ۱۸ تا ۳۰ سال یک پیغام و برای بقیه افراد یک پیغام دیگر چاپ کنیم. ساختار IF … ELSE IF بدین صورت است:
if(شرط اول){ } else if(شرط دوم) { } else { }
همان طور که می بینید if اول با شرط و قطعه کدش نوشته شده و سپس از کلمه else استفاده شده و بعد از آن کلمه if نوشته شده واین بار شرط و قطعه کد آن نوشته شده و در آخر هم از واژه else استفاده شده و قطعه کد مربوط به آن مثل همیشه بین دو براکت نوشته می شود. این ساختار بدین گونه عمل می کند که ابتدا شرط اول را چک می کند، اگر درست بود قطعه کد مربوط به آن اجرا می شود و به بعد از کل ساختار می رود و دیگر شرط ها را چک نمی کند و اگر درست نبود از قطعه کد شرط اول گذشته و به سراغ شرط دوم می رود. این بار نیز شرط چک می شود اگر درست بود قطعه کد مربوط به آن اجرا شده و به بعد از کل ساختار می رود و اگر درست نبود به سراغ اجرای کد نوشته شده در مقابل کلمه else خواهد رفت. توجه کنید که در این ساختار می توان از تعداد زیادی شرط استفاده کرد. همچنین می توان قسمت else را اصلا ننوشت یعنی اگر یکی از آن شرط ها برقرار نباشد هیچ کدی در این ساختار اجرا نخواهد شد. مثلا اگر سن کاربر ۳۰ باشد و شرط های ما کوچکتر از ۲۰ و بین ۲۱ تا ۲۸ باشد و از else هم استفاده نکرده باشیم هیچ کدی اجرا نخواهد شد.
قبل از نوشتن کد بعدی شما را با عملگر های شرطی، بیشتر آشنا می کنیم:
< بزرگتر از
> کوچکتر از
=> کوچکتر یا مساوی
=< بزرگتر یا مساوی
&& و
|| یا
== برابر بودن
=! برابر نبودن
با چهار مورد اول که آشنا هستید، مورد پنجم(&&) برای چک کردن بیش از یک شرط همزمان مورد استفاده قرار می گیرد و مجموع شرط ها در صورتی ارزش صحیح دارد که تمامی شرط های همزمان صحیح باشند. مثلا اگر بخواهیم چک کنیم که سن کاربر هم بزرگتر از ۱۸ و هم کوچکتر از ۴۰ است و در آن صورت پیغامی را چاپ کنیم، این گونه عمل می کنیم:
else if(user>18 && user<40)
اینجا ما می خواهیم چک کنیم که متغیر user بزرگتر از ۱۸ و کوچکتر از ۴۰ است. به یاد داشته باشید، ما می خواهیم آنچه را که درون متغیر user هست را بررسی کنیم. شرط اول بزگتر بودن است و شرط دوم کوچکتر بودن. بین این دو از علامت && استفاده شده است. پس کل خط بیانگر این جمله است: “اگر user بزگتر از ۱۸ و کوچکتر از ۴۰ است”
در مورد سه علامت بعدی نیز در ادامه صحبت می کنیم، اما تا به اینجا کد زیر را بررسی می کنیم:
برنامه را اجرا کنید و نتایج را مشاهده کنید. اکنون باید بتوانید حدس بزنید که در صورت اجرا چه اتفاقی خواهد افتاد. چون عدد ۲۱ در user ذخیره شده است، پس پیامی که در میان براکت های else if قرار دارد چاپ خواهد شد.(“User is between 19 and 39”)
[divider]
تمرین
مقدار متغیر user را از ۲۱ به ۴۵ تغییر دهید. و این بار ببینید که کدام پیام چاپ می شود.
می توانید else if های بیشتری اضافه کنید، برای مثال فرض کنید که می خواهیم ۴۵ بودن یا ۵۰ بودن سن user را هم بررسی کنیم. می توانیم از دو عملگر شرطی بالا استفاده کنیم و بررسی کنیم که “user برابر ۴۵ یا برابر ۵۰ هست” یا نه:
else if(user==45 || user==50)
برای بررسی برابر بودن دو چیز از دو علامت مساوی پشت سر هم که فاصله ای بینشان نیست(==) استفاده می کنیم.بین دو بخش بررسی برابر بودن user با ۴۵ و ۵۰ از عملگر”یا “(||) استفاده شده است. که بدین گونه عمل می کند که اگر یکی از آن دو شرط نوشته شده هم برقرار باشد، عبارت، در کل ارزش صحیح خواهد داشت:
این کد را خودتان امتحان کنید. مقدار متغیر user را به ۴۵ تغییر دهید و کد را اجرا کنید. سپس آن را به ۵۰ تغییر داده و دوباره کد را اجرا کنید. در هر دو مورد باید یک پیغام مشابه چاپ شود. پس دیدیم که می توان از عملگر های شرطی مختلفی برای عبارت های شرطی استفاده نمود و بخش مهم کار اینجاست که عملگر مناسب را برای مقصود خود به کار ببریم. تمرین بیشتر به شما این امکان را می دهد که در این امر موفق شوید.
IF های تودرتو(Nested IF Statements)
یک یا چند عبارت شرطی را می توان داخل عبارت شرطی دیگری نوشت. فرض کنید که شما می خواهید اگر سن کابر از ۱۸ به پایین بود برایش یکی از دو پیغام مد نظرتان چاپ شود. یک پیغام برای افرادی که سنشان از ۱۶ تا ۱۸ سال است و پیغام دیگر برای افرادی که زیر ۱۶ سال هستند. برای انجام این کار این گونه عمل می کنیم:
if (user < 19){ if(user>16){ System.out.println("You are 17 or 18"); } else { System.out.println("16 or younger"); } }
کد بالا به این صورت عمل می کند که در خط اول بررسی می شود که user از ۱۹ کوچکتر هست یا نه(برابر ۱۸ یا پایینتر) اگر درست بود وارد بدنه if می شود و در خط دوم با شرط دیگری روبرو می شود این بار بررسی می کند که از ۱۶ بزرگتر هست یا نه، اگر بزرگتر بود پیغام داخل بدنه آن در خط سوم چاپ شده و از بدنه هر دو if خارج می شود، اگر نبود(سن کاربر۱۶ یا کمتر بود) با توجه به این که بخش else را نوشته ایم، کد درون بدنه آن اجرا می شود که پیغامی که در خط ششم هست چاپ خواهد شد و از بدنه if خارج می شود. به براکت های استفاده در این بخش دقت کنید زیرا یک اشتباه کوچک باعث ایجاد خطا خواهد شد.
در بخش بعد متغیر های Boolean با ما همراه باشید…