การซ้อนตัวดำเนินการสามส่วน
เชื่อมการตัดสินใจอย่างรอบคอบ
การซ้อนตัวดำเนินการสามส่วน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวดำเนินการสามส่วน
- การซ้อนตัวดำเนินการสามส่วน
- ตัวดำเนินการสามส่วนกับ if/else
- ข้อควรระวังด้านความอ่านง่าย