การเขียนโปรแกรม Java แบบ Loops
Loops
For
Loops for ประกอบด้วย 3 ส่วน
ส่วนแรกคือ (int i = 0) จะทำงานเพียงครั้งเดียวตอนเข้าสู่คำสั่ง for
จากนั้นจะทำงานในส่วนที่ 2 (i < 3) เป็นเงื่อนเหมือนกับ if ถ้าเงื่อนไขเป็น จริง จะทำงานภายใน Loop
ถ้าเป็นเท็จก็จะจบ loop หรือออกจาก loop
เมื่อทำงานคำสั่งภายใน loop เสร็จหมด โปรแกรมจะมาทำงานในส่วนที่ 3 (i++) คือการเปลี่ยนแปลงค่าตัวแปรที่ใช้เป็นเงื่อนไข ซึ่งจากตัวอย่างจะวน 3 รอบ
ลำดับการทำงานของ for loop จะทำงานดังนี้
เราสามารถลบส่วนที่ 1 กับ 3 มันยังทำงานได้อยู่และมันจะเหมือนกัน while loop
โปรแกรมจะทำงานในส่วนเงื่อนไข (Condition) ก่อน และจะทำงานใน loop ทุกครั้งที่เงื่อนไขเป็นจริงไปเรื่อย ๆจนกว่าจะเป็นเท็จ เท็จเมื่อไหร่จบเมื่อนั้น
ถ้าต้องการให้โปรแกรมทำงานใน loop หนึ่งรอบ ควรใช้ do .. while loop ซึ่งจะทำงานคำสั่งภายใน loop ก่อนเช็คเงื่อนไข ซึ่งตรงข้ามกับ while ที่เช็คก่อนถึงจะทำ มี syntax ดังนี้
for (int i = 0; i < 3; i++) {}
ส่วนแรกคือ (int i = 0) จะทำงานเพียงครั้งเดียวตอนเข้าสู่คำสั่ง for
จากนั้นจะทำงานในส่วนที่ 2 (i < 3) เป็นเงื่อนเหมือนกับ if ถ้าเงื่อนไขเป็น จริง จะทำงานภายใน Loop
ถ้าเป็นเท็จก็จะจบ loop หรือออกจาก loop
เมื่อทำงานคำสั่งภายใน loop เสร็จหมด โปรแกรมจะมาทำงานในส่วนที่ 3 (i++) คือการเปลี่ยนแปลงค่าตัวแปรที่ใช้เป็นเงื่อนไข ซึ่งจากตัวอย่างจะวน 3 รอบ
ลำดับการทำงานของ for loop จะทำงานดังนี้
int i = 0; i < 3 // 0 < 3 = true // Inside of loop i++ // i is now 1 i < 3 // 1 < 3 = true // Inside of loop i++ // i is now 2 i < 3 // 2 < 3 = true // Inside of loop i++ // i is now 3 i < 3 // 3 < 3 = false // Loop is done...
เราสามารถลบส่วนที่ 1 กับ 3 มันยังทำงานได้อยู่และมันจะเหมือนกัน while loop
for (;i < 5;) {}
While
while (condition) {}
โปรแกรมจะทำงานในส่วนเงื่อนไข (Condition) ก่อน และจะทำงานใน loop ทุกครั้งที่เงื่อนไขเป็นจริงไปเรื่อย ๆจนกว่าจะเป็นเท็จ เท็จเมื่อไหร่จบเมื่อนั้น
ถ้าต้องการให้โปรแกรมทำงานใน loop หนึ่งรอบ ควรใช้ do .. while loop ซึ่งจะทำงานคำสั่งภายใน loop ก่อนเช็คเงื่อนไข ซึ่งตรงข้ามกับ while ที่เช็คก่อนถึงจะทำ มี syntax ดังนี้
do { } while(condition);
Foreach
เป็นอีกเวอร์ชั่นของ for เมื่อเราต้องการใช้ข้อมูลภายใน Array ทุกตัวตามลำดับเราใช้ for each จะง่ายกว่า for
public class Main { public static void main(String[] args) { int[] arr = {2, 0, 1, 3}; for (int el : arr) { System.out.println(el); } } }
เปรียบเทียบกับ for
public class Main { public static void main(String[] args) { int[] arr = {1, 9, 9, 5}; for (int i = 0; i < arr.length; i++) { int el = arr[i]; System.out.println(el); } } }
break and continue
เป็นตัวควบคุม loop เมื่อเราต้องการให้หยุด loop อย่างทันทีโดยไม่ต้องรอให้เงื่อนใน loop for เป็นเท็จให้ใช้ break
public class Main { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) { if (i >= 2) { break; } System.out.println("Yuhu"); } System.out.println(i); // Output: // Yuho // Yuho // 2 } }
ส่วน continue ถ้าเจอ continue เมื่อไหร่จะจบการวน ในรอบนั้นทันที ไม่ทำงานในคำสั่งที่เหลือ ไม่เหมือน break ที่จบการทำงานของ loop ออกจาก loop ไปเลย
public class Main { public static void main(String[] args) { int i; for (i = 0; i < 5; i++) { if (i >= 3) { break; } System.out.println("Yuhu"); if (i >= 1) { continue; } System.out.println("Tata"); } System.out.println(i); // Output // Yuhu // Tata // Yuhu // Yuhu // 3 } }
แบบฝึกหัด
ใช้ loop แสดงข้อมูลใน Array numbers เฉพาะเลขคู่ ตามลำดับเดิม และไม่ต้องแสดงข้อมูลหลังจากเลข 237
public class Main { public static void main(String[] args) { int[] numbers = { 951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544, 615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941, 386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345, 399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217, 815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717, 958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470, 743, 527}; // พิมพ์ code ของคุณตรงนี้ } }
public class Main {
public static void main(String[] args) {
int[] numbers = {
951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
743, 527};
// พิมพ์ code ของคุณตรงนี้
for(int number : numbers){
if(number % 2 ==0) System.out.print(number + " ");
if(number == 237) break;
}
}
}