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


در این قسمت از آموزش نیاز است تا عملکرد دستور ;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 در قالب پروژه خرید آنلاین آشنا خواهیم شد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۵/۳۰
من به یه مشکل منطقی برخورد کردم ، برای اینکه مطمئن بشیم کاربر عدد صحیح (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();
}

}

کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۴/۰۹
فایروال تون مشکل داره :|پاد کست ک دانلود میکنم وصطش متوقف میشه و آی پی مو بلاک میکنه :|
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۴/۰۹
به قول مهران مدیری خعععلی ممنونم واسه سایت خوبتون واسه من ک خیلی مفید بوده
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۴/۰۶
سپاس
کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۴/۰۶
سلام.ادمین عزیز فرمودین که برای شروع برنامه نویسی اندروید، لازم است تا سر فصل ۱۵ را مطالعه نموده و بیش از آن نیازی نیست.کل این اموزش خودش 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");
}

}
}
mehdifahimkama
mehdifahimkama
۱۳۹۶/۰۵/۰۲
متغیر رو داخل if تعریف کن :


import java.util.Scanner;

public class Example {

public static void main(String[] args) {

Scanner keyboardIput = new Scanner(System.in);
System.out.println("Plerase input your birth month number");

if (keyboardIput.hasNextInt()) {
int monthNumber = keyboardIput.nextInt() ;
switch (monthNumber) {
case 1 :
System.out.println("Farvardin");
break;

case 2 :
System.out.println("ordib");
break;

case 3 :
System.out.println("kordad");
break;
case 4 :
System.out.println("tir");
break;
default :
System.out.println("OOPps mistake");
break ;
}

} else {
System.out.println("No integer");
}


}
}

در پاسخ به

کاربر میهمان
کاربر میهمان
۱۳۹۵/۰۱/۲۶
خیلی زیاد... عالی.. واقعا خسته نباشید و ممنون
mkhorsandifar
mkhorsandifar
۱۳۹۴/۱۲/۲۱
سلام
اول می خواستم از اینکه این سایتو راه اندازی کردید تشکر کنم.....
بعدم اینکه من هدفم یادگرفتن اندروید هست، خواستم بدونم جاوا را باید تا آخرش تو سکان آکادمی بخونم بعد برم سراغ اندروید؟
ممنون
ادمین سایت
ادمین سایت
۱۳۹۴/۱۲/۲۱
با سلام خدمت شما کاربر گرامی
تا سر فصل ۱۵ کفایت می کند

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

هاشم همراز
هاشم همراز
۱۳۹۴/۰۹/۲۲
با سلام و عرض خسته نباشید خدمت شما عزیزان
من تو کدهایی که مینویسم کنار خط
Scanner keyboardInput = new Scanner(System.in);
یه اخطار زرد رنگ میذاره و این پیام رو نشون میده
Resource leak: 'keyboardInput' is never closed
برای رفع این حالت چیکار باید بکنم؟
Sina Deuxshiri
Sina Deuxshiri
۱۳۹۴/۰۹/۲۲
سلام
با استفاده از متد ;()close آبجت اسکنر و ببندید.

در پاسخ به

هاشم همراز
هاشم همراز
۱۳۹۴/۰۹/۲۶
مرسی از راهنماییت

در پاسخ به

ApA
ApA
۱۳۹۴/۰۹/۲۰
باسلام و ممنون از آموزش فوق العاده تان
میخواستم بدونم با توجه به اینکه گفته بودید آموزشها در محیط کنسول هستند من اگه این آموزشها و آموزش اندرویدتون را یاد بگیرم میتونم برنامه اندروید بنویسم یا نه؟
ممنون میشم اگه جوابمو بدید
کاربر میهمان
کاربر میهمان
۱۳۹۴/۰۹/۰۷
خیلی خیلی ممنونم که جوابمو دادین.فقط ببخشید متوجه نشدم،یعنی میگین فصل 15 آموزش جاوا را نیازی نیست بخونم و برم سراغ آموزش اندروید؟????
کاربر میهمان
کاربر میهمان
۱۳۹۴/۰۹/۰۶
اول تشکر فوق العاده من رو بپزیرید
دوم میخواستم بدونم تو دستور case میشه دستور های مقایسه ای گزاشت مثل بزرگتر یا کوچکتر یا...
باز هم متشکر
کاربر میهمان
کاربر میهمان
۱۳۹۴/۰۹/۰۴
با سلام و تشکر بسیار زیاد از آموزش فووووووق العادتون.میخواستم بدونم با توجه به اینکه گفته بودید آموزشها در محیط کنسول هستند من اگه این آموزشها و آموزش اندرویدتون را یاد بگیرم میتونم برنامه اندروید بنویسم یا نه.در ضمن خیلی ازتون تشکر میکنم واسه زحمتاتون.خییییلی عالیه آموزشتون
ادمین سایت
ادمین سایت
۱۳۹۴/۰۹/۰۵
با سلام
احتراما به استحضار می رساند که اموزش های جاوا اصول برنامه نویسی با این زبان را آموزش می دهند و مسلما برای توسعه اپلیکیشن های اندرویدی نیاز به آن خواهید داشت. برای شروع برنامه نویسی اندروید، لازم است تا سر فصل ۱۵ را مطالعه نموده -بیش از آن نیازی نیست- سپس بروید سراغ اپلیکیشن نویسی برای اندروید. در دوره ی اندروید، پروژه ها واقعی تر هستند و می توانید اپلیکیشن های واقعی مثل ذکرشمار و ... بنویسید.


با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به