نحوه ی استفاده از دستور بریک در سوییچ


در این قسمت از آموزش نیاز است تا عملکرد دستور ;breakرا توضیح دهیم. برای شروع کار پروژه ای که در جلسه ی قبل ایجاد کردیم را باز می کنیم. در این مرحله کد ما می بایست به شکل زیر باشد:

import java.util.Scanner;
public class BreakStatement {
    public static void main(String[] args) {
        Scanner keyboardInput = new Scanner(System. in );
        System.out.print("Please enter the number of your birth month: ");
        int monthNumber = keyboardInput.nextInt();
        switch (monthNumber) {
            case 1:
            System.out.println("You were born in Farvardin.");
            break;
            case 2:
            System.out.println("You were born in Ordibehesht.");
            break;
            case 3:
            System.out.println("You were born in Khordad.");
            break;
            case 4:
            System.out.println("You were born in Tir.");
            break;
            case 5:
            System.out.println("You were born in Mordad.");
            break;
            case 6:
            System.out.println("You were born in Shahrivar.");
            break;
            case 7:
            System.out.println("You were born in Mehr.");
            break;
            case 8:
            System.out.println("You were born in Aban.");
            break;
            case 9:
            System.out.println("You were born in Azar.");
            break;
            case 10:
            System.out.println("You were born in Day.");
            break;
            case 11:
            System.out.println("You were born in Bahman.");
            break;
            case 12:
            System.out.println("You were born in Esfand.");
            break;
        }
    }
}

در واقع پس از وارد کردن عددی در بخش کنسول و زدن دکمه اینتر، این داده ی ورودی وارد برنامه می شود و از طریق کلاس Scanner در متغیر int که ایجاد کردیم و نام آن را monthNumber گذاشتیم ذخیره می شود. سپس متغیر خود را در دستور switch فرا می خوانیم. در اولین فاز، دستور switch می سنجد که ببیند آیا داده متغیرش معادل با case 1 می باشد یا خیر. چنانچه معادل با عدد یک بود در این مرحله شرط موجود در case 1 که دستور ;(".System.out.println("You were born in Farvardin می باشد را اجرا می کند. به محض این که این دستور انجام شد، دستور break به برنامه می گوید که دیگر نیازی به اجرای دستورات بعدی نبوده و بلافاصله می بایست برود به آخر برنامه و از داخل دستور شرطی سوئیچ خارج شود.

حال فرض کنیم که عدد ورودی 7 است. در این صورت برنامه اول به سراغ اولین شرط می رود و مشاهده می کند که عدد 7 با case 1 مطابقت ندارد پس دستور break از برنامه می خواهد که به سراغ دومین شرط برود و باز هم می بیند که نیازش برآورده نمی شود و این کار آنقدر تکرار می شود تا به مورد هفتم می رسد. در این مرحله برنامه می بیند که تطبیق صورت گرفت پس دستور break برنامه ما را وادار می سازد تا مابقی شروط را نادیده گرفته و مستقیماً به آخر برنامه برود.

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

اکنون ببینیم که اگر دستورات break را نداشته باشیم چه اتفاقی خواهد افتاد! برای همین منظور، می توانیم یا کلیه دستورات break را به صورت کامنت در آوریم و یا از برنامه حذف کنیم که در اینجا مورد اول منطقی تر به نظر می رسد که در این صورت کد ما به شکل زیر در خواهد آمد:

import java.util.Scanner;
public class MySwitchClass {
    public static void main(String[] args) {
        Scanner keyboardInput = new Scanner(System.in);
        System.out.print("Please enter the number of your birth month: ");
        int monthNumber = keyboardInput.nextInt();
        switch (monthNumber) {
            case 1 :
            System.out.println("You were born in Farvardin.");
            // break;
            case 2 :
            System.out.println("You were born in Ordibehesht.");
            // break;
            case 3 :
            System.out.println("You were born in Khordad.");
            // break;
            case 4 :
            System.out.println("You were born in Tir.");
            // break;
            case 5 :
            System.out.println("You were born in Mordad.");
            // break;
            case 6 :
            System.out.println("You were born in Shahrivar.");
            // break;
            case 7 :
            System.out.println("You were born in Mehr.");
            // break;
            case 8 :
            System.out.println("You were born in Aban.");
            // break;
            case 9 :
            System.out.println("You were born in Azar.");
            // break;
            case 10 :
            System.out.println("You were born in Day.");
            // break;
            case 11 :
            System.out.println("You were born in Bahman.");
            // break;
            case 12 :
            System.out.println("You were born in Esfand.");
            // break;
        }
    }
}

همان طور که در آموزش های پیشین توضیح داده شد برای کامنت کردن بخشی از کد می توان نشانگر موس را روی خط مد نظر قرار دادن و دکمه Ctrl را به همراه علامت / فشار می دهیم. در این مرحله مجدداً برنامه را اجرا می کنیم و عددی دلخواه را از میان 1 تا 12 وارد می سازیم و نتیجه ای عجیب مشابه تصویر زیر خواهیم دید:

در واقع بدون حضور دستورات break برنامه هیچ مانعی بر سر راه خود برای اجرای کلیه دستورات نخواهد دید و آن ها را یکی پس از دیگری اجرا خواهد کرد مگر آنکه عدد 12 وارد شود. در حقیقت از آنجا که پس از case 12 دستور دیگری وجود ندارد برنامه ما فقط و فقط همان دستور را به نمایش در خواهد آورد و یا اگر عدد ورودی ما 10 باشد، برنامه مستقیماً به سراغ case 10 می رود و پس از اجرای آن و کلیه دستورات پس از آن که case 11 و case 12 می باشند به اتمام خواهد رسید و نتیجه ای مشابه تصویر زیر ارائه خواهد کرد:

حال که با اهمیت دستور break آشنا شدیم می توانیم مجدداً با قرار دادن نشانگر موس خود روی خطوطی که این دستور در آن نوشته شده و فشردن هم زمان کلید های Ctrl و علامت / آن ها را از حالت کامنت بیرون در آوریم.

نکته پایانی این قسمت از آموزش به بررسی این نکته می پردازد که زمان هایی ممکن است اتفاق افتد که کاربر به طور اشتباه عددی به غیر از 1 تا 12 را وارد می سازد مثلاً عدد 13 که در این صورت پس از اجرای برنامه خروجی زیر را خواهیم دید:

در حقیقت از آنجا که هیچ گونه شرطی برای ورودی هایی به غیر از 1 تا 12 تعریف نکرده ایم، برنامه ما چیزی برای ارائه کردن در دست ندارد. برای رفع این مشکل می بایست از دستور default استفاده کنیم. در واقع این دستور حاکی از آن است که هر آنچه که به غیر از شروط case 1 تا case 12 وارد برنامه شد، می بایست شرط default اجرا شود. با دانستن این نکته، به تکمیل کد خود می پردازیم تا به برنامه دستور دهیم که اگر کاربر عددی به غیر از 1 تا 12 انتخاب کرد، جمله ی !You made a mistake boy را به معنی "پسر اشتباه کردی!" را نمایش دهد. برای همین منظور کد خود را به شکل زیر تکمیل می کنیم:

import java.util.Scanner;
public class MySwitchClass {
    public static void main(String[] args) {
        Scanner keyboardInput = new Scanner(System.in);
        System.out.print("Please enter the number of your birth month: ");
        int monthNumber = keyboardInput.nextInt();
        switch (monthNumber) {
            case 1 :
            System.out.println("You were born in Farvardin.");
            break;
            case 2 :
            System.out.println("You were born in Ordibehesht.");
            break;
            case 3 :
            System.out.println("You were born in Khordad.");
            break;
            case 4 :
            System.out.println("You were born in Tir.");
            break;
            case 5 :
            System.out.println("You were born in Mordad.");
            break;
            case 6 :
            System.out.println("You were born in Shahrivar.");
            break;
            case 7 :
            System.out.println("You were born in Mehr.");
            break;
            case 8 :
            System.out.println("You were born in Aban.");
            break;
            case 9 :
            System.out.println("You were born in Azar.");
            break;
            case 10 :
            System.out.println("You were born in Day.");
            break;
            case 11 :
            System.out.println("You were born in Bahman.");
            break;
            case 12 :
            System.out.println("You were born in Esfand.");
            break;
            default:
            System.out.println("You made a mistake boy!");
            break;
        }
    }
}

پس از اجرای برنامه و وارد کردن عددی به غیر از اعداد 1 تا 12 برنامه ما به درستی کار کرده و به ما اخطار خواهد داد:

در پایان این قسمت از آموزش به برنامه نویسان مبتدی پیشنهاد می شود تا حد ممکن از Copy کردن کدها از داخل آموزش خودداری نموده و سعی کنند خود کد ها را در محیط اکلیپس بنویسند چرا که با این کار هم می توانند مهارت سریع تایپ کردن خود را بهبود بخشیده و در ضمن راحت تر خواهند توانست به منطق پشت هر خط از کد پی ببرند زیرا در حین کدنویسی حتماً می بایست در مورد کاری که انجام می دهیم فکر کنیم که در غیر این صورت ممکن است بیشتر مرتکب اشتباه شویم. در آموزش قسمت بعد با نحوه به کار گیری متغیر char در دستور switch در قالب پروژه خرید آنلاین آشنا خواهیم شد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
mohamad kazemi
mohamad kazemi
سلام خدمت استاد
واقعا عالی و شمرده شمرده تا به اینجا همه چی واضع و دقیق بوده
موفق و پایدار باشید
فقط یک سوال برای نوشتن برنامه برای گوشی واسه شروع از همین مقطع خوبه ؟
مرحله بعدی چه اموزشی رو کار کنم ؟
ممنون میشم که جواب بدید
درپناه حق یا علی
Sharifi_7
Sharifi_7
آموزش عالیه...خیلی با حوصله و شیوا تدریس میکنید ... دمتون گرم
کاربر میهمان
نیمامن یک کاربر مهمان هستم
من به یه مشکل منطقی برخورد کردم ، برای اینکه مطمئن بشیم کاربر عدد صحیح (int) وارد می کنه باید یک شرک تعریف کنیم ، ولی چرا نمی شه ورودی رو خارج از شرط از کاربر گرفت ؟ حتی اگر متغیر رو هم خارج از شرط معرفی کنیم باز هم برنامه به درستی کار نمی کنه ، این کدی هست که نوشتم بعد از آزمایش و خطای زیاد الان درست کار می کنه ولی راستش هنوز خودم منطقش رو درک نکردم !! چرا نمی شه ورودی و متغیر رو خارج از شرط از کاربر گرفت ؟؟؟ لطفا راهنمایی کنید ، مرسی


import java.util.Scanner;

public class SwitchProject {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.print("PLEASE ENTER NUMBER OF YOUR BIRTH : ");

if (input.hasNextInt()) {

int age = input.nextInt();

switch (age) {

case 1:

System.out.println("nFARVARDIN");

break;

case 2:

System.out.println("nORDIBEHESHT");

break;

case 3:

System.out.println("nKHOPRDAD");

break;

case 4:

System.out.println("nTIR");

break;

case 5:

System.out.println("nMORDAD");

break;

case 6:

System.out.println("nSHAHRIVAR");

break;

case 7:

System.out.println("nMEHR");

break;

case 8:

System.out.println("nABAN");

break;

case 9:

System.out.println("nAZAR");

break;

case 10:

System.out.println("nDAY");

break;

case 11:

System.out.println("nBAHMAN");

break;

case 12:

System.out.println("nESFAND");

break;

default:

System.out.println();
System.out.println("NUMBER IS OUT OF RANGE!! PLEASE TRY AGAIN ...");

break;

}

}

else {

System.out.println();
System.out.println("PLEASE ENTER INT. NUMBER");
}

input.close();
}

}

کاربر میهمان
mehradمن یک کاربر مهمان هستم
فایروال تون مشکل داره :|پاد کست ک دانلود میکنم وصطش متوقف میشه و آی پی مو بلاک میکنه :|
کاربر میهمان
mehradمن یک کاربر مهمان هستم
به قول مهران مدیری خعععلی ممنونم واسه سایت خوبتون واسه من ک خیلی مفید بوده
کاربر میهمان
Titanمن یک کاربر مهمان هستم
سپاس
کاربر میهمان
Titanمن یک کاربر مهمان هستم
سلام.ادمین عزیز فرمودین که برای شروع برنامه نویسی اندروید، لازم است تا سر فصل ۱۵ را مطالعه نموده و بیش از آن نیازی نیست.کل این اموزش خودش 15 فصله.لطفا بفرمایید منظورتون دقیقا چی بوده؟ممنون.
icanican
icanican
این خط کد int monthNumber = keyboardInput.nextInt حذف و در IF تعریف کن
Mahmood
Mahmood
با سلام خدمت دوستان و اساتید عزیز مخصوصا استاد گرامی بهزاد مرادی
من میخوام قبل از اینکه شرط switch انجام بشه نوع داده ورودی رو چک کنه ولی این کد رو نوشتم کار نمی کنه ممنون میشم راهنماییم کنید.
import java.util.Scanner;


public class MySwitchClass {
public static void main(String[] args) {
Scanner keyboardInput = new Scanner(System.in);
System.out.print("Please enter the number of your birth month: ");
int monthNumber = keyboardInput.nextInt();
//check the enter data type
if(keyboardInput.hasNextInt()){

switch(monthNumber){
case 1 :
System.out.println("You were born in Farvardin");
break;
case 2 :
System.out.println("You were born in Ordibehesht");
break;
case 3 :
System.out.println("You were born in Khordad");
break;
case 4 :
System.out.println("You were born in Tir");
break;
case 5 :
System.out.println("You were born in Mordad");
break;
case 6 :
System.out.println("You were born in Shahrivar");
break;
case 7 :
System.out.println("You were born in Mehr");
break;
case 8 :
System.out.println("You were born in Aban");
break;
case 9 :
System.out.println("You were born in Azar");
break;
case 10 :
System.out.println("You were born in Dey");
break;
case 11 :
System.out.println("You were born in Bahman");
break;
case 12 :
System.out.println("You were born in Esfand");
break;
default :
System.out.println("You made a mistake boy!");
break;
}
}else{
System.out.println("Sorry, please enter the right format");
}

}
}
کاربر میهمان
زهرامن یک کاربر مهمان هستم
خیلی زیاد... عالی.. واقعا خسته نباشید و ممنون