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

การซ้อนตัวดำเนินการสามส่วน

เชื่อมการตัดสินใจอย่างรอบคอบ

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

ตัวดำเนินการสามทางซ้อนกันคืออะไร

ตัวดำเนินการสามทางซ้อนกันคือการวางตัวดำเนินการสามทางอีกตัวไว้ภายในแขนงใดแขนงหนึ่ง

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

ผลลัพธ์คือลำดับเงื่อนไขที่ประเมินจากซ้ายไปขวา

int score = 75;
String grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";

การจัดกลุ่มทำงานอย่างไร

ตัวดำเนินการสามทางรวมกลุ่มจากขวา ซึ่งหมายความว่าแขนงเท็จจะครอบคลุมส่วนที่เหลือของลำดับ

ดังนั้น a ? x : b ? y : z จึงอ่านได้เป็น a ? x : (b ? y : z)

เครื่องหมาย : แต่ละตัวจะส่งต่อไปยังเงื่อนไขถัดไป

// reads as: a ? x : (b ? y : z)
String r = false ? "x" : true ? "y" : "z"; // r = "y"

การเลือกสามทาง

ในที่นี้ ตัวเลขจะถูกจัดประเภทเป็นลบ ศูนย์ หรือบวก

เงื่อนไขแรกตรวจสอบว่าเป็นค่าลบหรือไม่ ส่วนแขนงเท็จจะตรวจสอบต่อว่าเป็นศูนย์หรือค่าบวก

public class Main {
    public static void main(String[] args) {
        int n = 0;
        String sign = n < 0 ? "negative" : n == 0 ? "zero" : "positive";
        System.out.println(sign);
    }
}

ตัวอย่างการให้เกรด

การใช้งานแบบคลาสสิกคือการจับคู่คะแนนกับเกรดตัวอักษร

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

public class Main {
    public static void main(String[] args) {
        int score = 83;
        String grade = score >= 90 ? "A"
            : score >= 80 ? "B"
            : score >= 70 ? "C" : "F";
        System.out.println(grade);
    }
}

ลำดับมีความสำคัญ

เงื่อนไขจะถูกทดสอบจากบนลงล่าง ดังนั้นให้วางช่วงที่เฉพาะเจาะจงที่สุดหรือช่วงสูงสุดไว้ก่อน

หากคุณตรวจสอบ score >= 70 ก่อน score >= 90 คะแนน 95 จะหยุดที่การจับคู่แรกอย่างไม่ถูกต้อง

// wrong order: 95 would match >= 70 first
int score = 95;
String g = score >= 70 ? "C" : score >= 90 ? "A" : "F"; // g = "C"!

การเพิ่มวงเล็บเพื่อความชัดเจน

Java ไม่บังคับให้ใช้วงเล็บ แต่การใช้วงเล็บช่วยให้ผู้อ่านเห็นการซ้อนกันได้อย่างชัดเจน

การครอบตัวดำเนินการสามทางภายในแต่ละตัวด้วยวงเล็บจะแสดงให้เห็นอย่างชัดเจนว่าแขนงต่าง ๆ จับคู่กันอย่างไร

int n = 5;
String s = n < 0 ? "neg" : (n == 0 ? "zero" : "pos");

การจัดรูปแบบข้ามบรรทัด

ลำดับที่ยาวจะอ่านได้ง่ายขึ้นเมื่อวางแต่ละเงื่อนไขไว้คนละบรรทัด

จัด ? และ : ให้อยู่ในแนวเดียวกัน เพื่อให้โครงสร้างดูคล้ายบันได

public class Main {
    public static void main(String[] args) {
        int temp = 22;
        String label = temp >= 30 ? "hot"
            : temp >= 20 ? "warm"
            : temp >= 10 ? "cool"
            : "cold";
        System.out.println(label);
    }
}

การซ้อนในแขนงจริง

คุณสามารถซ้อนตัวดำเนินการไว้ในแขนงจริงได้เช่นกัน แม้ว่าจะพบได้น้อยกว่าและอ่านได้ยากกว่า

เมื่อทำเช่นนี้ ขอแนะนำอย่างยิ่งให้ใช้วงเล็บเพื่อหลีกเลี่ยงความสับสน

boolean a = true, b = false;
String r = a ? (b ? "both" : "only a") : "neither";

การคืนค่าตัวดำเนินการสามทางซ้อนกัน

เมธอดสามารถคืนค่าผลลัพธ์แบบหลายทางด้วยตัวดำเนินการสามทางซ้อนกันเพียงตัวเดียว

วิธีนี้ยังอ่านได้ง่ายสำหรับสามหรือสี่กรณี แต่จะยุ่งเหยิงเมื่อมีกรณีมากกว่านั้น

public class Main {
    static String size(int len) {
        return len < 5 ? "short" : len < 10 ? "medium" : "long";
    }
    public static void main(String[] args) {
        System.out.println(size(7));
    }
}

รู้ว่าเมื่อใดควรหยุด

การซ้อนสองระดับมักไม่มีปัญหา แต่การซ้อนสามระดับขึ้นไปมักทำให้ติดตามได้ยาก

เมื่อลำดับยาวขึ้น โครงสร้างเงื่อนไขถ้า/มิฉะนั้นถัดไป หรือโครงสร้างเลือก switch จะชัดเจนและแก้ไขข้อบกพร่องได้ง่ายกว่า

การไล่ตามลำดับ

ลองไล่ตามลำดับนี้ด้วยตนเอง: เมื่อ day = 6 เงื่อนไขแรกเป็นเท็จ และเงื่อนไขที่สองเป็นจริง

ดังนั้นผลลัพธ์คือ "Saturday" โดยไม่ต้องตรวจสอบส่วนที่เหลือ

public class Main {
    public static void main(String[] args) {
        int day = 6;
        String name = day == 7 ? "Sunday"
            : day == 6 ? "Saturday" : "Weekday";
        System.out.println(name);
    }
}

การตรวจสอบอย่างรวดเร็ว

ทดสอบว่าตัวดำเนินการสามทางซ้อนกันจัดกลุ่มอย่างไร

ทบทวน

ตัวดำเนินการสามทางซ้อนกันจะเชื่อมเงื่อนไขเพื่อเลือกค่าตั้งแต่สามค่าขึ้นไป

ตัวดำเนินการเหล่านี้รวมกลุ่มจากขวา ดังนั้นแขนงเท็จจึงครอบคลุมส่วนที่เหลือ โปรดจัดลำดับเงื่อนไขอย่างรอบคอบ

เพิ่มวงเล็บและการขึ้นบรรทัดใหม่เพื่อความชัดเจน และเปลี่ยนไปใช้โครงสร้าง if/else เมื่อลำดับยาวขึ้น

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

บทเรียน “การซ้อนตัวดำเนินการสามส่วน” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การซ้อนตัวดำเนินการสามส่วน”

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

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

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

บทเรียน “การซ้อนตัวดำเนินการสามส่วน” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ตัวดำเนินการสามส่วน
  2. การซ้อนตัวดำเนินการสามส่วน
  3. ตัวดำเนินการสามส่วนกับ if/else
  4. ข้อควรระวังด้านความอ่านง่าย
← กลับไปที่ Java Academy