1. เกริ่นนำ
เหตุผลที่มนุษย์เราเขียนโปรแกรมขึ้นมานั้นก็เพื่อที่จะให้โปรแกรมนั้นทำงานที่ซ้ำ ๆ แทนมนุษย์หรืองานที่ต้องการความรวดเร็วนั่นเองครับ ยกตัวอย่างเช่น การขายน้ำอัดลม
การคำนวณทางคณิตศาสตร์ หรือแม้กระทั่งการทำบัญชีค่าใช้จ่ายของบริษัท การที่มนุษย์จะให้โปรแกรมทำงานแทนได้นั้นมนุษย์จะต้องบอกโปรแกรมล่วงหน้าเสียก่อนว่าจะให้โปรแกรมทำอะไร
และถ้าเกิดสถาณการณ์บางอย่างเกิดขึ้นจะให้โปรแกรมตัดสินใจทำอย่างไร ทั้งหมดที่กล่าวมานั้นต่างก็เกี่ยวข้องกับการควบคุมทิศทางการเดินของโปรแกรมทั้งสิ้น
เพราะฉะนั้นในบทความนี้เราจะมาพูดกันถึงการควบคุมทิศทางการเดินของโปรแกรมกันครับ
2. วัตถุประสงค์
เพื่อที่จะให้คุณผู้อ่านได้รู้จักและคุ้นเคยกับ
2.1 การตัดสินใจ ( Decision making ) ในโปรแกรมด้วย if statement
2.2 การใช้ลูปในโปรแกรม ( Looping )
2.3 การใช้ break และ continue statement
2.4 การใช้ switch statement
3. การตัดสินใจในโปรแกรมด้วย if statement
ยกตัวอย่างถึงเครื่องขายน้ำอัดลมอัตโนมัติ สมมุติว่าน้ำอัดลมกระป๋องละสิบบาท
ลูกค้าจะต้องใส่เงินเข้าไปในช่องใส่เงิน เครื่องขายน้ำก็จะทำการเปรียบเทียบว่าเงินที่ใส่เข้ามาเท่ากับสิบบาทหรือเปล่า
ถ้าเงินที่ลูกค้าให้มาเท่ากับสิบบาทเครื่องจึงจะให้น้ำลูกค้าไป
ในตัวอย่างข้างบนนี้คุณผู้อ่านจะเห็นว่ามีคำว่าถ้าอยู่
ในความเป็นจริงแล้วถ้านั้นเกี่ยวข้องกับการตัดสินใจ
ในภาษาจาวานั้นคำที่แทนคำว่าถ้าก็คือ if นั่นเอง
syntax ของ if statement คือ
if ( a logical expression returning boolean "true" or "false" )
{
do something .......
}
ถ้าเราเอาตัวอย่างเครื่องขายน้ำอัดลมอัตโนมัติมาใส่เข้าไปใน if statement
ก็จะได้ว่า
if ( payment is equal to 10 baths )
{
give customer the soda
}
ในเครื่องหมายวงเล็บที่อยู่ถัดจาก if นั้นอาจจะเป็นจริงหรือเป็นเท็จก็ได้
ถ้าเป็นจริงล่ะก็ expressions ที่อยู่ในเครื่องหมาย { } ( ปีกกา ) ก็จะถูก
evaluated ทีนี้ถ้าเรามาแปล if statement ข้างบนนี้ก็จะอ่านได้ว่า ถ้าลูกค้าใส่เงินเข้ามาในช่องรับเงินเท่ากับสิบบาทล่ะก็เครื่องก็จะให้น้ำอัดลมกับลูกค้า
แต่ถ้าลูกค้าให้เงินมาไม่เท่ากับสิบบาทล่ะจะเกิดอะไรขึ้น ถ้าภายในเครื่องหมายวงเล็บนั้นถูก
evaluated เป็นค่าเท็จล่ะก็ expressions ในเครื่องหมายปีกกาก็จะไม่ถูกกระทำนั่นเองครับและจาวาก็จะไปสนใจในบรรทัดที่ต่อจากเครื่องหมายปีกกาปิด
( } ) เพราะฉะนั้นถ้าลูกค้าจ่ายเงินมาไม่เท่ากับสิบบาทล่ะก็เครื่องขายน้ำก็จะไม่ให้น้ำกับลูกค้านั่นเอง
เราสามารถเขียนเครื่องหมายปีกกาเปิดให้อยู่บรรทัดเดียวกับ if ก็ได้นะครับ
เช่น
if ( payment is equal to 10 bahts ) {
give customer the soda
}
ประโยชน์ในการเขียนแบบนี้ก็คือประหยัดเนื้อที่ไปหนึ่งบรรทัดและทำให้ดูสะอาดขึ้นด้วยครับ
ผู้เขียนจะขอใช้รูปแบบนี้จากนี้เป็นต้นไปนะครับ
คุณผู้อ่านคงจะสังเกตเห็นนะครับว่าตัวอย่างของเรายังไม่สมบูรณ์ดีนัก ถ้าลูกค้าให้เงินมามากกว่าหรือเท่ากับสิบบาทเครื่องก็ควรจะให้น้ำกับลูกค้าไปพร้อมกับทอนเงินให้ลูกค้าด้วย
แต่ถ้าน้อยกว่าสิบบาทเครื่องก็ควรจะบอกลูกค้าว่าขาดเงินอีกเท่าไหร่ ถ้าเราเอามาเขียนใน
if statement ก็จะได้ว่า
if ( payment is greater than or equal to 10 bahts ) {
give customer the soda
calculate the change then give it back to the customer
}
else {
calculate the amount of money to complete the purchase
and show that amount to the customer
}
เพื่อความสะดวกในการอธิบาย ผู้เขียนจะขอเรียก expressions ที่ถูกครอบคลุมอยู่ในเครื่องหมายปีกกาเปิดและปิดว่า
block นะครับ ใน if statement นั้นเราสามารถเพิ่ม else block เข้าไปได้
ถ้า logical expressions ในเครื่องหมายวงเล็บรีเทอร์นค่าจริงล่ะก็ if block
ก็จะถูก evaluated แต่ถ้ารีเทอร์นค่าเท็จล่ะก็ else block ก็จะถูก evaluated
แทน
if-else statement นั้นเปรียบเทียบได้กับทางแยกสองทาง คนที่เดินผ่านมาเจอทางสองแยกนี้จะต้องเลือกว่าจะเดินผ่านทางใดทางหนึ่งเท่านั้น
และข้อมูลที่จะทำให้คนผู้นั้นตัดสินใจเดินไปทางใหนก็คือสิ่งที่อยู่ในเครื่องหมายวงเล็บนั่นเอง
ทางทั้งสองทางนั้นจะมาบรรจบกันอีกครั้งหนึ่งที่จุดสิ้นสุดของ else block นั่นหมายความว่าหนึ่งในสอง
blocks ( if หรือ else block ) เท่านั้นที่จะถูก evaluated ขึ้นอยู่กับว่า
logical expression ในเครื่องหมายวงเล็บเป็นจริงหรือเท็จ และหลังจากที่ if
หรือ else block ได้ถูก evaluated เรียบร้อยแล้วจาวาก็จะมา evaluate บรรทัดที่อยู่ต่อจาก
else block ต่อไป
4. Nested if และ else if statements
เราสามารถใส่ if-else blocks เข้าไปในอีก if-else block หนึ่งได้ เรามาลองดัดแปลงตัวอย่างที่เรามีอยู่แล้วเพื่อให้มองเห็นภาพของการใช้
nested if-else blocks กันนะครับ ในตัวอย่างข้างบนนี้ถ้าลูกค้าให้เงินมาสิบบาทพอดีเครื่องก็ไม่ควรจะต้องทอนเงินใช่ใหมครับ
if ( payment is greater than or equal to 10 bahts ) {
give customer the soda
if ( payment is equal to 10 bahts ) {
calculate the change then give it back to the
customer
}
}
else {
calculate the amount of money to complete the purchase
and show that amount of money to the customer
}
ในตัวอย่างข้างบนนี้คุณผู้อ่านคงจะสังเกตเห็นว่าเราได้เพิ่ม if block เข้าไปใน
if block ข้างบนนี้ if ( payment is equal to 10 bahts )จะถูก evaluated
ก็ต่อเมื่อ if ( payment is greater than or equal to 10 bahts ) เป็นจริงเท่านั้น
ในภาษา C และจาวานั้นการใส่ block เข้าไปในอีก block หนึ่งเรียกว่าการ
nest หรือการใส่เข้าไปในกรงนั่นเองครับ ถ้าคุณผู้อ่านลองมองตัวอย่างนี้ให้ดีคุณจะพบว่าเราได้สร้าง
tree ขึ้นมาแบบหนึ่งซึ่งมีรากหรือจุดเริ่มต้นที่ if block ที่อยู่นอกสุด if
แรกนั้นได้แตกออกเป็นสองทางคือ if block กับ else block และภายใน if block
แรกนั้นเรายังแตกออกได้เป็นอีก if block และ else block นึง ถ้าเราทำอย่างนี้ไปเรื่อย
ๆ เราก็จะเห็นเป็นโครงสร้างของ tree นั่นเอง
ในจาวานั้นเราสามารถทำ nested if ให้ดูง่ายขึ้นได้
ถ้า nested if อยู่ในรูปแบบ
if ( condition 1 ) {
expression 1;
}
else {
if ( condition 2 ) {
expression 2;
}
else {
if ( condition 3 ) {
expression 3;
}
else {
if ( .... ) {
....
}
else {
....
}
}
}
}
สามารถเปลี่ยนให้เป็น
if ( condition 1 ) {
expression 1;
}
else if ( condition 2 ) {
expression 2;
}
else if ( condition 3 ) {
expression 3;
}
else if ( .... ) {
....
}
else {
....
}
ลักษณะของโครงสร้างข้างบนนี้เหมือนกับ tree มีรากที่จุดเดียวกันแต่แตกออกมาเป็นหลาย
ๆ สาขาเท่ากับจำนวน block ที่มีอยู่ เรายังสามารถใส่ if-else block เข้าไปข้างในของ
แต่ละ else if block ได้อีกกี่ชั้นก็ได้นะครับ
5. การใช้ Loop ในโปรแกรม
Loop นั้นเป็นเครื่องมือที่จะช่วยให้คอมพิวเตอร์ทำอะไรซ้ำ ๆ แทนมนุษย์
ในจาวานั้นเรามี loop อยู่สามแบบคือ while loop, do-while loop และ for loop
5.1 while loop
while loop นั้นเป็น loop พื้นฐานที่เกิอบจะทุกภาษาคอมพิวเตอร์จะต้องมีอยู่
while loop จะเริ่มต้นจากการเช็คคอนดิชันที่อยู่ในวงเล็บว่าเป็นจริงหรือเปล่า
ถ้าคอนดิชันนั้นเป็นจริงอยู่ while loop ก็จะ evaluate expressions ทั้งหมดที่มีอยู่ใน
while block แล้วจึงกลับมาเช็คคอนดิชันนั้นใหม่ while loop จะวนรอบอยู่อย่างนี้จนกระทั่งคอนดิชันนั้นเป็นเท็จจึงจะหลุดออกจาก
while loop เพราะฉะนั้นถ้าคอนดิชันนั้นเป็นจริงตลอดเวลาโปรแกรมนั้นก็จะติดอยู่ใน
infinite loop ซึ่งเป็นสิ่งที่โปรแกรมเมอร์ควรจะระวังไม่ให้เกิดขึ้น โดยปรกติแล้วการที่จะทำให้โปรแกรมหลุดออกจาก
while loop นั้นตัวโปรแกรมจะต้องทำการ modify condition ภายใน block ให้เป็นเท็จเสียก่อน
รูปแบบของ while loop
while ( condition ) {
expression 1;
expression 2;
....
}
5.2 do-while loop
การทำงานของ do-while loop นั้นเกือบจะเหมือนกับ while loop เลยทีเดียวเพียงแต่ต่างกันตรงที่
while loop นั้นจะเช็คคอนดิชันก่อนที่จะเข้าไป evaluate expressions ใน block
แต่ do-while loop นั้นจะ evaluate expressions ก่อนแล้วจึงเช็คคอนดิชันทีหลัง
เพราะฉะนั้นถ้าคอนดิชันนั้นเป็นค่าเท็จก่อนที่จะเข้า loop ล่ะก็ while loop
จะไม่ evaluate expressions ใน block เลยแม้แต่ครั้งเดียว แต่ do-while loop
จะ evaluate expressions ใน block อย่างน้อยหนึ่งครั้ง สรุปว่าเราสามารถพูดได้ว่าใน
do-while loop นั้นเรารับประกันได้เลยว่า expressions ใน block นั้นจะถูก
evaluated อย่างน้อยหนึ่งครั้ง
รูปแบบของ do-while loop คือ
do {
expression 1;
expression 2;
....
} while ( condition );
โปรดสังเกตว่า do-while loop นั้นจะต้องมี semicolon ( ; ) เป็นตัวปิด
statement อยู่ข้างหลังด้วย
5.3 for loop
for loop นั้นมีพื้นฐานมาจาก while loop นั่นเองเพียงแต่ว่า for loop
ถูกออกแบบมาให้มี syntax ที่เข้าใจและใช้ได้ง่ายขึ้น
รูปแบบของ for loop คือ
for ( initializing expression; condition-checking expression; incremental
expression ) {
expression 1;
expression 2;
....
}
คุณผู้อ่านคงจะเห็นว่าในเครื่องหมายวงเล็บของ for นั้นเรามี 3 expressions
ด้วยกัน
Table 1. For loop expressions
| Expression |
Description |
| initializing expression |
expression ที่ใช้ในการ initialize variable ก่อนที่จะเข้าไปใน block |
| condition-checking expression |
expression ที่ for loop จะเช็คทุกครั้งก่อนที่จะ evaluate expressions
ภายใน block ถ้าเป็นเท็จล่ะก็โปรแกรมก็จะหลุดออกจาก for loop |
| incremental expression |
expression ที่ for loop จะ evaluated ทุกครั้งหลังจากที่ expressions
ทั้งหมดภายใน block ถูก evaluated เรียบร้อยแล้ว |
เรามาดูตัวอย่างกันดีกว่านะครับ
โปรแกรมที่ 1
1 // forLoopExample.java
2 class forLoopExample {
3 public static void main(String
args[]) {
4 // Printing number
1 to 10
5 int i;
6 for( i=1; i<=10;
i++ ) {
7 System.out.println("Number
" + i);
8 }
9 }
10 }
ในตัวอย่างข้างบนนี้ก่อนที่จะเริ่มเข้าไปใน loop ค่าของตัวแปร i
จะถูกตั้งค่าให้เท่ากับ 1 หลังจากนั้นโปรแกรมก็จะเช็คว่าค่าของ i
นั้นน้อยกว่าหรือเท่ากับ 10 หรือเปล่า ถ้าค่าของ i ยังน้อยกว่าหรือเท่ากับ
10 โปรแกรมก็จะเข้าไปใน block และ evaluate expressions ที่มีอยู่ใน block
ซึ่งในที่นี้ก็คือ พิมพ์ค่าของ i ออกมาบนจอมอนิเตอร์ หลังจาก evaluate
เสร็จโปรแกรมก็จะมา evaluate incremental expression ซึ่งก็คือ i++
หลังจากที่โปรแกรมวนไปครบสิบรอบค่าของ i ก็จะกลายเป็น 11 ซึ่ง
คอนดิชัน i<=10 เป็นเท็จเพราะฉะนั้นโปรแกรมก็จะหลุดออกจาก for
loop
เราสามารถเขียน for loop ในรูปของ while loop ได้ดังตัวอย่างข้างล่างนี้
โปรแกรมที่ 2
1 // whileForLoopExample.java
2 class whileForLoopExample {
3 public static void main(String
args[]) {
4 // Printing number
1 to 10
5 int i;
6
7 i = 1; //initializing
expression
8 while (i<=10) {
9 System.out.println("Number
" + i);
10 i++; //incremental
expression
11 }
12 }
13 }
Incremental expression นั้นไม่จำเป็นต้องเป็นการเพื่มของตัวเลขเสมอไป
คุณผู้อ่านอาจจะใช้ class method หรือฟังก์ชันอย่างอื่นมาใส่ไว้ก็ได้
6. break และ continue
นอกเหนือจากคอนดิชันที่อยู่ในเครื่องหมายวงเล็บของ while, do-while และ
for loop ที่เป็นตัวตัดสินใจว่าจะหยุดการวนรอบแล้วยังมีวิธีอื่นที่จะสามารถทำให้โปรแกรมออกจาก
loop ได้อีก โดย statement ที่ทำหน้าที่นั้นก็คือ break นั่นเองครับ
โดยทั่วไป break statement นั้นจะถูกห่อหุ้มอยู่ใน if block ที่อยู่ใน
loop อีกทีหนึ่ง ถ้า break statement ไม่อยู่ใน if block แล้วล่ะก็จะไม่มี
loop ใหนเลยที่วนเกินหนึ่งรอบ เนื่องจากเราใส่ if (break_condition) { break;
} เข้าไปใน loop เราก็จะมีคอนดิชันที่จะทำให้โปรแกรมหลุดออกจาก loop เพิ่มเป็นสองอันด้วยกัน
เรามาดูตัวอย่างกันดีกว่านะครับ
โปรแกรมที่ 3
1 // breakLoopExample.java
2 class breakLoopExample {
3 public static void main(String
args[]) {
4 // Printing number
1 to 10 but break at 5
5 int i;
6 for( i=1; i<=10;
i++ ) {
7 System.out.println("Number
" + i);
8 if ( i
== 5 ) {
9
System.out.println("Break at i = " + i);
10
break;
11 }
12 }
13 }
14 }
ในตัวอย่างข้างบนนี้เราจะเห็นว่ามีอยู่สองคอนดิชันคือ i<=10
ในวงเล็บในบรรทัดเดียวกับ for และอีกอันหนึ่งก็คือ i==5 ใน if คุณผู้อ่านคงจะสงสัยนะครับว่าถ้าเราใส่เข้าไปใน
condition-checking expression ในวงเล็บของ for ว่า i<=5 ก็ได้ผลเหมือนกันแล้วทำไมจะต้องเอา
break statement มาใส่ให้ยุ่งยาก จริงๆแล้วมันไม่เหมือนกันนะครับเพราะว่าถ้าเราใช้
break statement เราสามารถเรียกคำสั่งบางอันก่อนที่จะ break ออกจาก loop ได้ตัวอย่างข้างบนก็คือการพิมพ์
Break at i = 5 ออกมาบนหน้าจอมอนิเตอร์
เครื่องมืออีกอันหนึ่งที่จะช่วยให้การใช้ loop มีประสิทธิภาพมากยิ่งขึ้นก็คือ
continue statement ในบางครั้งคุณผู้อ่านคงจะไม่อยากให้ expressions ที่อยู่ใน
loop นั้นถูก evaluated ทุกครั้งไปแต่มีบางกรณีเท่านั้นที่คุณผู้อ่านอยากจะให้โปรแกรมเข้าไป
evaluate expressions บางส่วนของ loop เท่านั้น เรามาดูตัวอย่างการใช้ continue
statement กันดีกว่าครับ
โปรแกรมที่ 4
1 // continueLoopExample.java
2 class continueLoopExample {
3 public static void main(String
args[]) {
4 // Printing number
1 to 10 except 4 and 7
5 int i;
6 for( i=1; i<=10;
i++ ) {
7 if ( i
== 4 || i == 7 ) {
8
continue;
9 }
10 System.out.println("Number
" + i);
11 }
12 }
13 }
ถ้าคุณผู้อ่านได้ลอง run ตัวอย่างข้างบนนี้คุณผู้อ่านคงจะสังเกตเห็นว่าค่า
4 และ 7 นั้นไม่ถูก print ออกมาเนื่องจากว่า continue statement นั้นจะทำให้โปรแกรมกระโดดข้าม
expressions ที่เหลืออยู่ใน block ไปที่ด้านล่างสุดของ block (บรรทัดที่ 11)
แล้วจึงกลับไปที่จุดเริ่มต้นของ loop (บรรทัดที่ 6) เพื่อเช็คคอนดิชันของรอบถัดไป
6. break และ continue แบบมี label
ในกรณีที่มีหลาย ๆ loops ซ้อน ๆ กันอยู่ break และ continue จะออกจาก
loop ที่อยู่ด้านในที่สุดแต่ถ้าคุณผู้อ่านต้องการให้ โปรแกรมออกจาก loop ที่อยู่เหนือกว่า
loop ที่อยู่ด้านในที่สุดก็จะต้องใช้ break และ continue แบบมี label แทน
เรามาดูตัวอย่างเล็ก ๆ กันดีกว่าครับ
โปรแกรมที่ 5
1 // continueLoopWithoutLabelExample.java
2 class continueLoopWithoutLabelExample {
3 public static void main(String
args[]) {
4 int i, j;
5 for( i=1; i<=3;
i++ ) {
6 System.out.println("Begin
loop #" + i);
7 j = 0;
8 while (
j <= 2 ) {
9
j++;
10
if ( i == 2 && j == 2 ) {
11
continue;
12
}
13
System.out.println("Number " + j);
14 }
15 System.out.println("End
loop #" + i);
16 }
17 }
18 }
ผลลัพธ์ของโปรแกรมที่ 5
1 Begin loop #1
2 Number 1
3 Number 2
4 Number 3
5 End loop #1
6 Begin loop #2
7 Number 1
8 Number 3
9 End loop #2
10 Begin loop #3
11 Number 1
12 Number 2
13 Number 3
14 End loop #3
โปรแกรมที่ 6
1 // continueLoopWithLabelExample.java
2 class continueLoopWithLabelExample {
3 public static void main(String
args[]) {
4 int i, j;
5 outerloop:
6 for( i=1; i<=3;
i++ ) {
7 System.out.println("Begin
loop #" + i);
8 j = 0;
9 innerloop:
10 while ( j <=
2 ) {
11
j++;
12
if ( i == 2 && j == 2 ) {
13
continue outerloop;
14
}
15
System.out.println("Number " + j);
16 }
17 System.out.println("End
loop #" + i);
18 }
19 }
20 }
ผลลัพธ์ของโปรแกรมที่ 6
Begin loop #1
Number 1
Number 2
Number 3
End loop #1
Begin loop #2
Number 1
Begin loop #3
Number 1
Number 2
Number 3
End loop #3
คุณผู้อ่านคงจะเห็นนะครับว่าในโปรแกรมที่ 6 นั้นต่างจากโปรแกรมที่ 5 ตรงที่โปรแกรมที่
6 ไม่พิมพ์ทั้งค่า 2 และ 3 ในขณะที่โปรแกรมที่ 5 นั้นไม่พิมพ์เพียงแค่ค่า
2 เนื่องจากว่าในโปรแกรมที่ 6 นั้นเราได้ใช้ continue ที่ชี้ไปหา outer loop
label เพราะฉะนั้นส่วนที่ทำค้างอยู่ใน inner loop จึงถูกยกเลิกไปด้วย ส่วนการใช้
break แบบมี label นั้นก็เหมือนกับ continue ครับ โดยปรกติ label นั้นจะต้องตามด้วยเครื่องหมาย
colon หรือ ":" และ label นั้นสามารถอยู่บรรทัดเดียวกับจุดเรื่มต้นของ loop
ได้ด้วยนะครับ คุณผู้อ่านคงจะเข้าใจการใช้ break และ continue แบบมี label
มากขึ้นหลังจากได้ดูตัวอย่างข้างบนนี้
7. การใช้ switch statement
ถ้าเรามี else if structure ดังในโครงสร้างข้างล่างนี้
int intvar;
if ( intvar == 1 ) {
expression 1;
}
else if ( intvar == 2 ) {
expression 2;
}
else if ( intvar == 3 ) {
expression 3;
}
else if ( intvar == 4 ) {
expression 4;
}
else {
expression 5;
}
เราจะสามารถเขียนให้อยู่ในรูปของ switch statement ได้ดังนี้
int intvar;
switch ( intvar ) {
case 1:
expression 1;
break;
case 2:
expression 2;
break;
case 3:
expression 3;
break;
case 4:
expression 4;
break;
default:
expression 5;
break;
}
ในแต่ละ case นั้นสามารถมีได้หลาย expressions นะครับ คุณผู้อ่านคงจะจำได้นะครับว่า
else if structure ข้างบนนี้มีความหมายเหมือนกับทางแยกหลาย ๆ ทาง (เท่ากับจำนวน
blocks) เพราะฉะนั้นจะมีเพียง case ใด case หนึ่งเท่านั้นที่จะถูก evaluated
สิ่งที่ทำให้ switch statement นั้นแตกต่างจาก else if structure นั้นก็คือ
switch statement นั้นจะใช้ได้กับการเปรียบเทียบค่าของตัวแปรเท่านั้นและจะต้องเป็นตัวแปรตัวเดียวด้วยซึ่งในตัวอย่างข้างบนนี้ก็คือ
intvar
เรามาลองดูตัวอย่างกันดีกว่านะครับ
โปรแกรมที่ 7
1 // switchExample.java
2 class switchExample {
3 public static void main(String
args[]) {
4 int i = 3;
5 switch ( i ) {
6 case 1:
7
System.out.println("i is equal to one");
8
break;
9 case 2:
10
System.out.println("i is equal to two");
11
break;
12 case 3:
13
System.out.println("i is equal to three");
14
break;
15 case 4:
16
System.out.println("i is equal to four");
17
break;
18 case 5:
19
System.out.println("i is equal to five");
20
break;
21 default:
22
System.out.println("i is not equal to either one, two, three, four or five");
23
break;
24 }
25 }
26 }
ผลลัพธ์ของโปรแกรมที่ 7
i is equal to three
คุณผู้อ่านคงจะสังเกตเห็นนะครับว่าในแต่ละ case ของโครงสร้างของ switch
นั้นจะมี break statement อยู่ด้วยนะครับ ถ้าเราไม่ใส่ break statement ลงไปล่ะก็
หลังจากที่ switch พบกับ case ที่ match กับค่าของ variable ที่อยู่ในวงเล็บแล้วล่ะก็
ทุก ๆ case ที่อยู่หลังจาก case นั้นจะถูก evaluated หมดจนกระทั่งโปรแกรมเจอกับ
break statement หรือไม่ก็โปรแกรมออกจาก switch block
เรามาลองดูตัวอย่าง switch ที่ขาด break statement บางอันไปกันดีกว่าครับ
โปรแกรมที่ 8
1 // switchWithSomeBreakStatementExample.java
2 class switchWithSomeBreakStatementExample {
3 public static void main(String
args[]) {
4 int i = 3;
5 switch ( i ) {
6 case 1:
7
System.out.println("i is equal to one");
8 case 2:
9
System.out.println("i is equal to two");
10 case 3:
11
System.out.println("i is equal to three");
12 case 4:
13
System.out.println("i is equal to four");
14 case 5:
15
System.out.println("i is equal to five");
16
break;
17 default:
18
System.out.println("i is not equal to either one, two, three, four or five");
19 }
20 }
21 }
ผลลัพธ์ของโปรแกรมที่ 8
i is equal to three
i is equal to four
i is equal to five
คุณผู้อ่านคงจะเห็นแล้วนะครับว่าหลังจากที่ switch statement นั้นพบว่า
case 3: นั้น match กับค่าที่อยู่ในตัวแปร i หลังจากนั้น switch
ก็จะ evaluate ทุก expressions ที่อยู่ใน case หลังจากนั้นจนกว่าจะเจอกับ
break statement หรือไม่ก็จนหมด switch block
8. สิ่งที่คุณผู้อ่านควรจะได้รับหลังจากอ่านบทความนี้
8.1 สามารถเลือกใช้ if, if-else และ else if statement ได้ในแต่ละสถาณการณ์ได้อย่างถูกต้อง
2.2 สามารถเลือกใช้ while, do-while หรือ for loop ได้ในแต่ละสถาณการณ์ได้อย่างถูกต้อง
2.3 สามารถใช้ break และ continue statement เพื่อที่จะ หลุดออกจาก loop
หรือ กระโดดข้ามบางรอบของ loop ได้อย่างถูกต้อง
2.4 สามารถใช้ switch statement ได้อย่างถูกต้อง
Copyright (C)
2000 www.jarticles.com
|