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


در آموزش گذشته به بررسی مقدمه‌ای از دستورات شرطی پرداخته و دستور if را معرفی کردیم و دیدیم که چگونه می‌توان دستوری شرطی تعریف کرد که در صورت برقرار بودن شرط مذکور یکسری دستورات خاص در برنامۀ مورد نظر اجرا شوند اما در این آموزش قصد داریم تا به معرفی دستور else و نحوۀ عملکرد آن بپردازیم. به طور کلی، با به‌كارگيری دستور else می‌توان برنامه‌ای طراحی کرد که چنانچه شرط تعیین‌شده برای برنامه true نباشد، مفسر جاوا به سراغ دستورات مرتبط با else رفته و آن‌ها را اجرا کند. 

پیش از بحث پیرامون دستور else در این بخش از آموزش می‌خواهیم یک دستور if تعریف کنیم تا مقادیر عددی منتسب به دو متغیر را با یکدیگر مقایسه کرده و در صورت برقرار بودن شرط تعیین‌شده، یکسری دستور مورد نظر اجرا گردند. برای این منظور، پروژه‌ای جدید در محیط اکلیپس تحت عنوان IfElse ایجاد کرده سپس کلاسی تحت عنوان ElseIfClass در آن می‌سازیم که در ابتدا کدی به صورت زیر خواهیم داشت:

public class ElseIfClass {
    public static void main(String[] args) {

    }
}

حال با استفاده از دیتا تایپ int دو متغیر تحت عناوین suv و bus تعریف کرده و به ترتیب هر یک از اعداد 4 و 40 را به آن‌ها منتسب می‌کنیم:

public class ElseIfClass {
    public static void main(String[] args) {
	int suv = 4, bus = 40;
    }
}

همان‌طور که مشاهده می‌کنیم، تعریف دو متغیر برنامه را به منظور خلاصه‌سازی سورس‌کد ادغام نموده‌ایم (در این مثال، suv مخفف واژگان Sport and Utility Vehicle به معنی «ماشین شاسی‌بلند» بوده و واژۀ bus نیز به معنی «اتوبوس» می‌باشد که هر یک از اعداد 4 و 40 نیز به منزلۀ ظرفیت مسافر آن‌ها در نظر گرفته شده‌اند.) بدین ترتیب، قصد داریم تا با استفاده از دستور if ظرفیت دو وسیلۀ نقلیۀ مذکور را با یکدیگر مقایسه کنیم که برای این منظور برنامۀ فوق را به صورت زیر تکمیل می‌نماییم:

public class ElseIfClass {
    public static void main(String[] args) {
        int suv = 4, bus = 40;
        if (suv < bus) {
            System.out.println("An SUV has less capacity.");
        }
    }
}

در کد فوق، در مقابل دستور if و مابین علائم ( ) شرط مورد نظر را بدین صورت تعریف کرده‌ایم که چنانچه مقدار منتسب به متغیر suv از مقدار اختصاص‌یافته به متغیر bus کوچکتر بود، شرط برقرار بوده و دستورات مرتبط با آن اجرا شوند که در آن گقته‌ایم استرینگ «.An SUV has less capacity» در کنسول چاپ شود که با اجرای برنامۀ فوق در خروجی خواهیم داشت:

An SUV has less capacity.

در واقع، از آنجایی که مقادیر عددی 4 و 40 را به ترتیب به هر یک از متغیرهای suv و bus اختصاص داده‌ایم، شرط تعریف‌شده در برنامه برقرار بوده و استرینگ مورد نظر در کنسول چاپ می‌شود.

در فرآیند توسعۀ اپلیکیشن، برخی مواقع نیاز به طراحی برنامه‌ای داریم که در صورت برقرار بودن شرط مورد نظر یکسری دستور را اجرا کرده و در غیر این صورت برخی دستورات دیگر اجرا شوند که در چنین شرایطی می‌توانیم از دستور else استفاده کنیم تا در صورت true نبودن شرط مذکور، دستورات مرتبط با آن اجرا گردند. 

برای روشن‌تر شدن این مطلب، سناریویی را مد نظر قرار می‌دهیم که در آن سن کاربر را تعریف کرده و یک دستور شرطی تعریف می‌کنیم که در صورت برقراری شرط مد نظر استرینگی با مضمون سن کاربر کوچک‌تر از حد مجاز قانونی می‌باشد و در غیر این صورت استرینگ مرتبط با قانونی بودن سن وِی را در کنسول چاپ کند. در همین راستا، مثال فوق را حذف کرده و کد جدید را به شکل زیر در سورس‌کد خود پیاده‌سازی می‌کنیم:

public class ElseIfClass {
    public static void main(String[] args) {
        int boy = 18;
        if (boy >= 18) {
            System.out.println("You have reached your majority.");
        } else {
            System.out.println("Sorry, you are too young!");
        }
    }
}

در کد فوق، با استفاده از دیتا تایپ int متغیری تحت عنوان boy تعریف کرده و مقدار عددی 18 معادل سن کاربر را برای آن در نظر گرفته‌ایم سپس در یک دستور شرطی مقابل علائم ( ) شرط مورد نظر خود را بدین صورت تعریف کرده‌ایم که چنانچه مقدار منتسب به متغیر boy بزرگ‌تر یا مساوی با عدد 18 بود، شرط برقرار بوده و استرینگ «.You have reached your majority» و در غیر این صورت دستورات مرتبط با else اجرا شده و استرینگ «!Sorry, you are too young» در کنسول نمایش داده شود. حال برنامۀ فوق را اجرا می‌نماییم و در خروجی خواهیم داشت:

You have reached your majority.

در واقع، با اجرای برنامۀ فوق مقدار عددی 18 به متغیر boy منتسب شده و شرط if چک می‌شود بدین صورت که آیا مقدار منتسب به این متغیر برابر با عدد 18 یا بزرگ‌تر از آن است یا خیر که می‌بینیم شرط مذکور true ارزیابی شده و از همین روی دستورات مرتبط با آن اجرا شده و استرینگ مورد نظر در کنسول چاپ می‌گردد. در ادامه، تغییری در برنامۀ خود اِعمال می‌کنیم بدین صورت که مقدار منتسب به متغیر boy را به عدد 13 کاهش می‌دهیم به طوری که داریم:

public class ElseIfClass {
    public static void main(String[] args) {
        int boy = 13;
        if (boy >= 18) {
            System.out.println("You have reached your majority.");
        } else {
            System.out.println("Sorry, you are too young!");
        }
    }
}

با اجرای کد فوق می‌بینیم که شرط تعریف‌شده برقرار نبوده و از همین روی مفسر جاوا دستورات مرتبط با else را اجرا می‌نماید که در نتیجه استرینگ «!Sorry, you are too young» در کنسول نمایش داده می‌شود:

Sorry, you are too young!

در واقع، با اجرای برنامۀ فوق، مقدار منتسب به متغیر boy در دستور if بررسی می‌شود که اگر مقداری برابر با عدد 18 یا بزرگ‌تر از آن داشته باشد، شرط تعریف‌شده برقرار می‌باشد اما این در حالی است که مقداری معادل با عدد 13 به متغیر مذکور اختصاص داده شده است و از همین روی دستور شرطی برابر با مقدار بولین false ارزیابی شده و مفسر به سراغ اجرای دستورات مرتبط با else رفته و در نهایت استرینگ فوق در کنسول چاپ می‌گردد.

نحوۀ ساده‌سازی دستورات شرطی در زبان برنامه‌نویسی جاوا

به عنوان راه‌کاری جایگزین می‌توانیم از ساختاری استفاده کنیم تا دستورات شرطی فوق‌الذکر را به شکل ساده‌تری پیاده‌سازی نماییم که بدین ترتیب دستورات مرتبط با if و همچنین else در یک سطر نوشته شده و منجر به سادگی سورس‌کد می‌گردند. برای آشنایی با این موضوع، دستورات شرطی مربوط به مثال قبل را به صورت زیر بازنویسی می‌کنیم:

public class ElseIfClass {
    public static void main(String[] args) {
        int boy = 18;
        System.out.println(boy >= 18 ? "You have reached your majority." : "Sorry, you are too young!");
    }
}

همان‌طور که می‌بینیم، در سطر چهارم، ابتدا شرط مورد نظر را نوشته سپس یک علامت ? قرار داده و در ادامه دستورات مرتبط با if را درج نموده‌ایم که در صورت true بودن شرط مذکور اجرا می‌شوند و در آن گفته‌ايم استرينگ «.You have reached your majority» توسط متد ()ptintln در كنسول چاپ شود. در ادامه، یک علامت : قرار داده و در نهایت دستورات مرتبط با else را نوشته‌ایم که در صورت false بودن شرط تعریف‌شده در برنامه اجرا شده و استرینگ «!Sorry, you are too young» در کنسول نمایش داده می‌شود. حال پس از اجرای کد فوق، خروجی زیر را مشاهده خواهیم کرد:

You have reached your majority.

با اجرای برنامۀ فوق، عدد 18 به متغیر boy منتسب شده و شرط مورد نظر نیز true ارزیابی می‌شود و از همین روی استرینگ فوق در کنسول چاپ می‌گردد. حال مقدار متغیر boy را به 17 کاهش می‌دهیم و کد خود را به شکل زیر بازنویسی می‌کنیم:

public class ElseIfClass {
    public static void main(String[] args) {
        int boy = 17;
        System.out.println(boy >= 18 ? "You have reached your majority." : "Sorry, you are too young!");
    }
}

در واقع، مقدار منتسب به متغیر boy از مقدار تعیین‌شده در شرط مورد نظر کمتر بوده و از همین روی شرط مذکور برابر با مقدار بولین false ارزیابی می‌شود که در نتیجه دستور مرتبط با else پس از علامت : اجرا شده و استرینگی به صورت زیر در کنسول نمایش داده می‌شود:

Sorry, you are too young!

به طور کلی، می‌توان گفت که در صورت خلاصه‌سازی دستورات شرطی به روش فوق، جملۀ اول مربوط به دستورات بدنۀ داخلی if و جملۀ دوم به دستورات بدنۀ داخلی else مربوط می‌شوند.

به علاوه، در برخی مواقع می‌توان چندین دستور شرطی را به صورت تودرتو تعریف کرده و بدین طریق دستورات مورد نظر را با بررسی برخی شرایط خاص اجرا کرد که در آموزش آتی به بررسی نحوۀ پیاده‌سازی دستورات شرطی تودرتو خواهیم پرداخت.

دانلود فایل‌های تمرین


بهزاد مرادی

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
jahani_zhr
jahani_zhr
۱۳۹۷/۰۶/۰۴
عالی بود . ممنون.
Sharifi_7
Sharifi_7
۱۳۹۷/۰۲/۰۳
دمتون گرم خسته نباشید ... عالیه
کاربر میهمان
نیلوفرمن یک کاربر مهمان هستم
۱۳۹۶/۰۲/۱۰
واقعا واقعا آموزش هاتون عااالی هستن
کاربر میهمان
mirplvمن یک کاربر مهمان هستم
۱۳۹۵/۱۰/۱۷
با سلام و خسته نباشید
دلیل این ارور چیه؟ syntax errors on token "else ", delete this token
تو همه کدا واسه else این ارورو میده
nahid
nahid
۱۳۹۵/۰۹/۰۶
تشکر از تدریس بسیار خوبتون..بسیار بسیار عالی...
کاربر میهمان
Amirsaleh Asgariمن یک کاربر مهمان هستم
۱۳۹۵/۰۹/۰۴
در باکس دوم از عبارت An SUV استفاده شده
فکر نمی کنم نیازی باشه از An استفاده کنیم باید از A استفاده بشه
sina
sina
۱۳۹۵/۰۷/۲۲
با عرض سلام و خسته نباشید خدمت تیم سکان آکادمی
من می خواستم این مطالب رو با مطالب فصل قبل (کلاس scanner) ترکیب کنم و یک برنامه برای تبدیل مایل به کیلومتر و بر عکس بنویسم. برنامه هم به این صورت باشه که اول از کاربر بپرسه که ورودی مایل باشه یا کیلومتر، بعد اگر ورودی مایل بود عدد ورودی رو تقسیم بر 1.6 کنه و اگر کیلومتر بود عدد ورودی رو ضرب در 1.6 کنه. ولی هر کاری میکنم برنامه با یک ارور منطقی مواجه میشه، به این صورت که من نوع ورودی رو هر چی بنویسم برنامه عدد رو به مایل تبدیل میکنه. می خواستم اگه ممکنه کدم رو بررسی کنید و بگید کجا اشتباه کردم.
اینم لینک عکس کدم:
http://s9.picofile.com/file/8270691668/Untitled.jpg
پیشاپیش ممنونم
MegaMind
MegaMind
۱۳۹۵/۰۵/۱۶
درود به شما آقای دوشیری عزیزم

من با استفاده از این مبحث و ترکیبش با مبحث قبلی ( کلاس scanner) تونستم یه برنامه بنویسم که مقدار آب رو از کاربر میگیره و با استفاده از دستور if و else بازخورد میده خیلیم خوشحالم که تونستم مطالب رو بفهمم :)
اینم لینک عکسِ کدم :
http://s6.uplod.ir/i/00808/0d45x4tprt9l.png

hacker
hacker
۱۳۹۴/۰۹/۲۶
mesy
کاربر میهمان
معینمن یک کاربر مهمان هستم
۱۳۹۴/۰۹/۱۸
واقعا ممنون آمزشاتون عالیه اما اگه با آموزشای قبلی مخلوط میشد (مثلا کلاس اسکنر)پروژه ها جالبتر بودند و آموزشای قبلی هم یادآوری میشد