การเขียนโปรแกรม Java แบบ Loops

12/18/2556 0 Comments

Loops

For

Loops for ประกอบด้วย 3 ส่วน

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;
        }
    }
}