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


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

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

در ادامه، دو متغیر از جنس int در کلاس خود تحت عناوین suv و bus با مقادیر به ترتیب 4 و 40 ایجاد می کنیم. در حقیقت مقادیر 4 و 40 به عنوان ظرفیت مسافر در نظر گرفته می شوند. کد ما می بایست به شکل زیر باشد:

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

اگر توجه کرده باشید به منظور خلاصه نویسی هر دو متغیر int را در هم ادغام نموده ایم (لازم به ذکر است که واژه suv مخفف واژه Sport and Utility Vehicle به معنی ماشین شاسی بلند مثل جیپ بوده و واژه bus هم به معنی اتوبوس می باشد.) سپس در برنامه خود می خواهیم ظرفیت مسافر این دو وسیله نقلیه را با یکدیگر مقایسه کنیم، از این رو کد فوق را به صورت زیر تکمیل می کنیم:

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 را با یکدگیر مقایسه می کنیم و از سوی دیگر این دستور را به کامپیوتر می دهیم که اگر مقدار suv کمتر از مقدار bus بود جمله An SUV has less capacity. به معنی یک ماشین شاسی بلند دارای ظرفیت کمتری است. را در کنسول نمایش دهد. خروجی برنامه فوق به شکل زیر خواهد بود:

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

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

در این کد، ما یک متغیر تحت عنوان boy به معنی پسر داریم که دارای مقدار 18 است (در اینجا منظور 18 سال است). در داخل دو پرانتز که می بایست شرط خود را در آن تعریف کنیم، شرط کرده ایم که اگر این پسر 18 ساله بود و یا بیش از 18 سال داشت جمله ی .You can enter به معنی شما می توانید وارد شوید نمایش داده شود. چیزی که در مثال فوق جدید است استفاده از ساختار else است. در واقع در این ساختار ما به برنامه دستور می دهیم که اگر جواب شرط true بود جمله ی .You can enter نمایش داده شود و اگر جواب شرط false بود برنامه دستوری را اجرا کند که داخل دو علامت { } مقابل else قرار گرفته است که در اینجا جمله ی !Sorry, you are too young به معنی متأسفیم، شما خیلی جوان هستید! نمایش داده خواهد شد. حال به بررسی خروجی برنامه در هر دو حالت خواهیم پرداخت.

در واقع کد جدیدی که نوشتیم خروجی فوق را در بر خواهد داشت. به طور خلاصه، برنامه چک می کند که آیا مقدار متغیر boy معادل با و یا بزرگتر از 18 است یا خیر. اگر پاسخ به این بررسی true بود جمله ی .You can enter نمایش داده می شود. حال تغییری در متغیر خود ایجاد می کنیم تا دستور داخل else ایجاد شود. برای این منظور مقدار اختصاص داده شده به متغیر boy را به 13 کاهش داده سپس برنامه را مجدد اجرا می کنیم. کد تغییر یافته به شکل زیر خواهد بود:

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

خروجی برنامه به شکل زیر خواهد بود:

در واقع در این حالت، برنامه نوشته شده بررسی می کند که آیا مقدار متغیر boy برابر با یا بزرگتر از 18 می باشد یا خیر که در اینجا جواب به این شرط false است. پس برنامه به سراغ بخش else می رود و هر دستوری را که در آن نوشته ایم را اجرا خواهد کرد که در اینجا چاپ جمله ی !Sorry, you are too young می باشد.

به عنوان راه کاری جایگزین می توانیم از ساختاری استفاده کنیم که تنها با قرار دادن یک علامت سوال در کد خود، کار هر دو دستور if و همچین else را انجام دهیم. برای روشن تر شدن این نکته، کد خود را به شکل زیر بازنویسی می کنیم:

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

در واقع همان طور که برای نمایش دادن جمله ای آن را داخل پرانتز داخل دستور ;()System.out.println می نویسیم، حال می توانیم شرط خود را داخل پرانتز نوشته و بلافاصله پس از آن یک علامت ? قرار دهیم. سپس همان طور که می خواهیم یک جمله را داخل دستور ;()System.out.println نمایش دهیم، جمله خود که می خواهیم در صورت true بودن جواب شرط به نمایش درآید را داخل دو علامت " " پس از علامت ? می نویسیم و یک علامت : قرار داده و پس از علامت : جمله دوم را که در صورت false بود جواب شرط می خواهیم به نمایش در آید را داخل دو علامت " " می نویسیم. حال پس از اجرای کد فوق، خروجی زیر مشاهده خواهد شد:

در این حالت از آنجا که مقدار متغیر boy مساوی با 18 است جمله اول در بخش کنسول به نمایش در می آید چرا که این جمله مرتبط با پاسخ true است. حال مقدار متغیر boy را به 17 کاهش می دهیم و کد خود را به شکل زیر بازنویسی می کنیم:

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

در واقع از آنجا که مقدار متغیر boy از مقدار تعیین شده در شرط کمتر است جمله دوم که پس از علامت : قرار گرفته است به نمایش در خواهد آمد چرا که پاسخ به شرط ما false است. در چنین حالتی، خروجی برنامه به شکل زیر خواهد بود:

در واقع چنانچه بخواهیم مقایسه ای مابین این ساختار و ساختار if و else داشته باشیم می توانیم بگوییم که در این ساختار جمله اول همانند دستوری است که مابین دو علامت { } پس از if می آید و جمله دوم همانند دستوری است که مابین دو علامت { } پس از دستور else می آید.

در آموزش آتی با اصطلاح Nested If Statement آشنا خواهیم شد. در واقع این اصطلاح به زمانی اطلاق می شود که ما چندین شرط if را داخل یکدیگر قرار می دهیم. علاوه بر این، مواردی همچون Else if و مورد بررسی قرار دادن چندین شرط در یک دستور if نیز مورد بررسی قرار خواهند گرفت.

دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
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
کاربر میهمان
معینمن یک کاربر مهمان هستم
واقعا ممنون آمزشاتون عالیه اما اگه با آموزشای قبلی مخلوط میشد (مثلا کلاس اسکنر)پروژه ها جالبتر بودند و آموزشای قبلی هم یادآوری میشد