در حال بارگذاری...

switch در Java

عدد صحیح ۲ را زیر نام choice نگه دارید. یک switch بسازید که case 1 و case 2 و case 3 را با println جدا، به‌همراه default، فهرست کند. وقتی کامپایل و اجرا کنید، صفحه باید یک خط mid نشان دهد — چون case 2 جور است. همین کار این صفحه است: یک مقدار، چند برچسب ثابت، یک مسیر برگزیده.

یک مقدار، چند برچسب ثابت

یک برنامهٔ کوچک با نام Dial.java بسازید. public class روی خط اول باید با نام فایل یکی باشد: public class Dial. نام کلاس قدیمی Gate یا Mint را در این فایل نگه ندارید؛ کامپایلر انتظار دارد نام کلاس و نام فایل جور باشند.
داخل main، قبل از switch، یک عدد صحیح بسازید:
int choice = 2;
این خط چیزی چاپ نمی‌کند؛ فقط به نام choice مقدار ۲ می‌دهد. choice با c کوچک شروع می‌شود. دور ۲ گیومه نیست. نقطه‌ویرگول خط نگه‌داری را تمام می‌کند. بعد خودِ switch می‌آید:
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
کلمهٔ switch با حرف کوچک است. داخل پرانتز نام choice می‌نشیند — همان مقداری که Java با هر برچسب case مقایسه می‌کند. هر خط case با دونقطه تمام می‌شود، نه نقطه‌ویرگول. زیر case 2 می‌نشیند System.out.println("mid"); و بعد کلمهٔ break با نقطه‌ویرگول. وقتی choice مقدار ۲ دارد، Java وارد case 2 می‌شود، mid را چاپ می‌کند، به break می‌رسد و از کل switch بیرون می‌آید. case 3 و default در این اجرا اجرا نمی‌شوند. قبل از کامپایل فایل را ذخیره کنید.

برنامه‌ای که mid چاپ می‌کند

این همان نسخه‌ای است که اول کامپایل می‌کنید. choice برابر ۲ است، پس برچسب جور case 2 است.

choice برابر ۲

java
public class Dial {
    public static void main(String[] args) {
        int choice = 2;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
                break;
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

در پوشه‌ای که Dial.java آنجاست بنویسید javac Dial.java. وقتی پرانتز و آکولاد و دونقطه‌ها جور باشند، javac خودش خطی نمی‌نویسد. بعد بنویسید java Dial — نه java Dial.java. پسوند .java را از فرمان دوم بردارید. همین دو فرمان در Windows و macOS یکی است؛ این صفحه املای پوستهٔ جدا برای هیچ‌کدام نمی‌خواهد. برنامه باید mid را چاپ کند و تمام شود. منتظر تایپ شما نمی‌ماند. اگر ترمینال منتظر ماند، هنوز nextLine از تمرین قدیمی داخل فایل است. آن را پاک کنید و int به‌همراه switch بالا را نگه دارید. برای خط اشتباه روی صفحه لازم نیست JDK را دوباره نصب کنید.

چرا mid و نه low یا high؟ چون مقدار داخل پرانتز ۲ بود و برچسب جور case 2 است. در این اجرا خودِ رقم ۲ چاپ نمی‌شود مگر println جدا برای آن بنویسید. هر چیزی که println زیر کیسِ جور بنویسد به صفحه می‌رسد. پرانتز مقداری را نگه می‌دارد که مقایسه می‌شود. هر برچسب case اینجا یک عدد صحیح ثابت است. break کل switch را تمام می‌کند تا کیس‌های بعدی ساکت بمانند. default منتظر مقدارهایی است که با هیچ کیسی جور نیستند — وقتی choice برابر ۲ است، default اجرا نمی‌شود.

وقتی هیچ کیسی جور نباشد

فقط مقدار ذخیره‌شده را عوض کنید:
int choice = 9;
ساختار switch را دست نزنید. حالا هیچ‌کدام از case 1 و case 2 و case 3 جور نیست. Java به default می‌رود و System.out.println("none"); را اجرا می‌کند. صفحه باید یک خط none نشان دهد.

choice برابر ۹

java
public class Dial {
    public static void main(String[] args) {
        int choice = 9;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
                break;
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

دوباره کامپایل و اجرا کنید: javac Dial.java و بعد java Dial. باید none ببینید. خط‌های case را بازنویسی نکردید — فقط مقدار زیر choice عوض شد. وقتی none را دیدید، اگر می‌خواهید دموی اول برگردد، int choice = 2; را برگردانید. هر دو نسخه Java درست‌اند. همان شکل switch را یک‌بار با کیس جور و یک‌بار با default نشان می‌دهند.

اجرای default را یک‌بار دیگر به ترتیب بخوانید. choice مقدار ۹ دارد. switch (choice) شروع می‌شود. case 1 جور نیست. case 2 جور نیست. case 3 جور نیست. اجرا به default می‌رسد. println("none") کار می‌کند. روی صفحه یک خط است. خودِ رقم ۹ ظاهر نمی‌شود مگر عمداً چاپش کنید.

break کیس‌های بعدی را قطع می‌کند

break تزئین نیست. بدون آن، بعد از یک جور شدن، Java می‌تواند خط‌های کیس بعدی را هم اجرا کند. این افتادن به پایین مبتدی را غافلگیر می‌کند. اینجا یک دموی کوتاه است که عمداً بعد از case 2 کلمهٔ break را جا انداخته — یا جدا امتحانش کنید، یا قبل از اینکه همان را فایل اصلی درس کنید دقیق بخوانید:

بدون break بعد از case 2

java
public class Dial {
    public static void main(String[] args) {
        int choice = 2;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

با choice برابر ۲ و بدون break زیر case 2، صفحه می‌تواند یک خط mid و خط بعد high نشان دهد. case 2 جور شد، mid چاپ شد، بعد به case 3 افتاد و high هم چاپ شد. دموهای اول درس زیر هر کیس break دارند تا هر مسیر دقیقاً یک خط بنویسد. قبل از اینکه Dial.java را دوباره فایل نگهداشتۀ درس بدانید، break را برگردانید.

چند قاعده که برچسب‌ها را روشن نگه می‌دارد

پرانتز دور مقداری که switch روی آن کار می‌کند لازم است. نوشتن switch choice { … } بدون پرانتز را javac قبول نمی‌کند. هر برچسب case در این صفحه یک عدد صحیح ثابت است: case 1: و case 2: و case 3:. بعد از برچسب دونقطه می‌آید. نوشتن case 2; با نقطه‌ویرگول به‌جای دونقطه شکل این درس نیست. default بعد از خودش مقدار ندارد — فقط default: و بعد خط‌های «هیچ‌کدام جور نبود».

switch همان ابزار if نیست. if (ready) سؤال true یا false می‌پرسد. switch (choice) یک مقدار را با فهرست برچسب‌های ثابت جور می‌کند. switch (ready) با boolean ننویسید و انتظار شکل درس Gate.java را نداشته باشید. دموهای این صفحه روی int با نام choice و برچسب‌های عدد صحیح می‌مانند. مقایسه‌هایی مثل if (score > 10) وقتی بازه می‌خواهید هنوز مال if است؛ switch وقتی می‌درخشد که مقدارها از قبل مشخص و جدا باشند.

اشتباه رایج این است که خودِ نحو را چاپ کنید: System.out.println("switch (choice)");. آن خط نویسه‌های switch (choice) را می‌نویسد و کیسی برنمی‌گزیند. اشتباه دیگر ماندن دموی if / else صفحهٔ Gate داخل همان main است؛ آن وقت صفحه pass نشان می‌دهد نه mid. main این جلسه فقط int و switch را نگه می‌دارد.

📊 مقدار choice و صفحه

choice صفحه
1 low
2 mid
3 high
9 none

جدول را بعد از یک اجرا چک کنید، نه به‌جای اجرا. choice برابر ۲ در دموی اول mid می‌نویسد. choice برابر ۹ در دموی دوم none می‌نویسد. choice برابر ۱ می‌نویسد low. choice برابر ۳ می‌نویسد high. اگر برای choice برابر ۲ هم mid و هم high آمد، زیر case 2 کلمهٔ break جا مانده — breakها را درست کنید؛ Java را دوباره نصب نکنید.

حالا چه کار می‌توانید بکنید

می‌توانید یک عدد صحیح بسازید، داخل switch (…) بگذارید، و برای هر مقدار ثابت یک case با println و break بنویسید. وقتی کیسی جور باشد آن خط اجرا می‌شود؛ وقتی هیچ‌کدام جور نباشد default اجرا می‌شود. صفحهٔ بعد for است؛ آنجا همان بلوک خط‌ها می‌تواند بارها تکرار شود وقتی شمارنده عوض می‌شود.

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
6
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود