0Pricing
Java Academy · บทเรียน

กรณีที่มีหลายป้ายกำกับ

จัดกลุ่มป้ายกำกับหลายรายการเข้าด้วยกัน

กรณีที่มีหลายป้ายกำกับ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจัดกลุ่มป้ายกำกับ

บ่อยครั้งที่หลายค่าควรเรียกใช้การทำงานเดียวกัน Java สมัยใหม่อนุญาตให้คุณระบุป้ายกำกับหลายรายการในกรณีเดียว โดยคั่นด้วยเครื่องหมายจุลภาคและใช้สาขาร่วมกัน

ป้ายกำกับคั่นด้วยจุลภาค

เขียนค่าต่าง ๆ ต่อกันโดยคั่นด้วยเครื่องหมายจุลภาคก่อน -> หากค่าใดค่าหนึ่งตรงกัน สาขานั้นจะทำงาน

public class Main {
    public static void main(String[] args) {
        int day = 7;
        switch (day) {
            case 1, 2, 3, 4, 5 -> System.out.println("Weekday");
            case 6, 7 -> System.out.println("Weekend");
        }
    }
}

การตรวจจับสระ

ตัวอย่างการใช้งานแบบคลาสสิกคือการจัดกลุ่มสระทั้งหมดไว้ในสาขาเดียว แทนการเขียนกรณีแยกกันห้ากรณี

public class Main {
    public static void main(String[] args) {
        char c = 'o';
        switch (c) {
            case 'a', 'e', 'i', 'o', 'u' -> System.out.println("Vowel");
            default -> System.out.println("Consonant");
        }
    }
}

หลายป้ายกำกับในนิพจน์

กรณีที่มีหลายป้ายกำกับใช้ในนิพจน์ switch ได้เช่นกัน โดยจะส่งคืนค่าเดียวกันสำหรับป้ายกำกับใด ๆ ที่ระบุไว้

public class Main {
    public static void main(String[] args) {
        int month = 7;
        String season = switch (month) {
            case 12, 1, 2 -> "Winter";
            case 3, 4, 5 -> "Spring";
            case 6, 7, 8 -> "Summer";
            default -> "Autumn";
        };
        System.out.println(season);
    }
}

การจัดกลุ่มป้ายกำกับ String

ค่าประเภท String ก็สามารถจัดกลุ่มได้เช่นกัน ในที่นี้การเขียนคำสั่งหลายรูปแบบจะถูกจับคู่กับการทำงานเดียว

public class Main {
    public static void main(String[] args) {
        String cmd = "quit";
        switch (cmd) {
            case "quit", "exit", "q" -> System.out.println("Closing");
            case "help", "h" -> System.out.println("Showing help");
            default -> System.out.println("Unknown command");
        }
    }
}

การจัดกลุ่มป้ายกำกับชนิดแจกแจง

ค่าคงที่ของชนิดแจกแจงสามารถใช้สาขาร่วมกันได้เช่นกัน ทำให้ตรรกะการจัดหมวดหมู่กระชับขึ้น

public class Main {
    enum Day { MON, TUE, WED, THU, FRI, SAT, SUN }
    public static void main(String[] args) {
        Day d = Day.SAT;
        String kind = switch (d) {
            case SAT, SUN -> "Rest";
            default -> "Work";
        };
        System.out.println(kind);
    }
}

ไม่มีป้ายกำกับซ้ำ

ป้ายกำกับแต่ละรายการปรากฏได้เพียงครั้งเดียวใน switch ทั้งหมด การระบุค่าเดียวกันในสองสาขาจะทำให้เกิดข้อผิดพลาดขณะคอมไพล์ เพราะคอมไพเลอร์ไม่สามารถตัดสินใจได้ว่าควรทำงานในสาขาใด

public class Main {
    public static void main(String[] args) {
        int n = 2;
        switch (n) {
            case 1, 2 -> System.out.println("Low");
            case 3, 4 -> System.out.println("High");
            default -> System.out.println("Other");
        }
    }
}

เปรียบเทียบกับการไหลต่อในรูปแบบเดิม

ในรูปแบบเดิมที่ใช้เครื่องหมายทวิภาค การจัดกลุ่มต้องใช้กรณีว่างที่ไหลต่อกันหลายกรณีวางไว้เหนือเนื้อหาสาขาร่วม เครื่องหมายจุลภาคอ่านเข้าใจได้ชัดเจนกว่ามากและช่วยหลีกเลี่ยงการไหลต่อโดยไม่ตั้งใจ

public class Main {
    public static void main(String[] args) {
        int code = 3;
        switch (code) {
            case 1, 3, 5, 7, 9 -> System.out.println("Odd");
            case 0, 2, 4, 6, 8 -> System.out.println("Even");
        }
    }
}

การจัดกลุ่มร่วมกับบล็อก

กรณีที่จัดกลุ่มสามารถใช้เนื้อหาแบบบล็อกได้เช่นกัน ป้ายกำกับใด ๆ ที่ตรงกันจะเรียกใช้บล็อกทั้งหมด

public class Main {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A', 'B' -> {
                System.out.println("Pass");
                System.out.println("Well done");
            }
            default -> System.out.println("Try again");
        }
    }
}

การใช้ร่วมกับ yield

ป้ายกำกับที่จัดกลุ่มและ yield สามารถทำงานร่วมกันได้เมื่อสาขาที่ใช้ร่วมกันต้องมีการคำนวณ

public class Main {
    public static void main(String[] args) {
        int n = 4;
        int points = switch (n) {
            case 1, 2, 3 -> 10;
            case 4, 5, 6 -> {
                int bonus = n * 2;
                yield 20 + bonus;
            }
            default -> 0;
        };
        System.out.println(points);
    }
}

ช่วยให้อ่านง่ายขึ้น

กรณีที่มีหลายป้ายกำกับช่วยย่อรายการสาขาที่ยาวและซ้ำซากให้เหลือกลุ่มที่ชัดเจนไม่กี่กลุ่ม ทำให้เข้าใจเจตนาได้ทันที

public class Main {
    public static void main(String[] args) {
        int http = 204;
        String group = switch (http / 100) {
            case 1, 2, 3 -> "OK-ish";
            case 4, 5 -> "Error";
            default -> "Unknown";
        };
        System.out.println(group);
    }
}

ตรวจสอบความเข้าใจ

ใน Java สมัยใหม่ คุณจะทำให้หลายค่าเรียกใช้สาขา switch เดียวกันได้อย่างไร

สรุป

คุณได้เรียนรู้กรณีที่มีหลายป้ายกำกับดังนี้

  • ระบุค่าต่าง ๆ โดยคั่นด้วยเครื่องหมายจุลภาคก่อน ->
  • ใช้ได้กับจำนวนเต็ม อักขระ String และชนิดแจกแจง
  • ไม่มีการไหลต่อโดยไม่ตั้งใจเหมือนในรูปแบบเดิม
  • ป้ายกำกับแต่ละรายการปรากฏได้เพียงครั้งเดียว
  • ใช้ร่วมกับบล็อกและ yield ได้เมื่อจำเป็น

คำถามที่พบบ่อย

บทเรียน “กรณีที่มีหลายป้ายกำกับ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “กรณีที่มีหลายป้ายกำกับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “กรณีที่มีหลายป้ายกำกับ”

จัดกลุ่มป้ายกำกับหลายรายการเข้าด้วยกัน คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “กรณีที่มีหลายป้ายกำกับ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. switch แบบลูกศร
  2. switch เป็นนิพจน์
  3. คีย์เวิร์ด yield
  4. กรณีที่มีหลายป้ายกำกับ
← กลับไปที่ Java Academy