โค้ดยิม/จาวาบล็อก/สุ่ม/สำหรับแต่ละลูปใน Java
John Squirrels
ระดับ
San Francisco

สำหรับแต่ละลูปใน Java

เผยแพร่ในกลุ่ม

for-แต่ละวงคืออะไร?

for -eachเป็นประเภทของforลูปที่คุณใช้เมื่อต้องการประมวลผลองค์ประกอบทั้งหมดของอาร์เรย์หรือคอลเลกชัน ที่กล่าวว่าวลีfor-eachไม่ได้ใช้จริงในลูปนี้ ไวยากรณ์เป็นดังนี้:
for (type itVar : array)
{
    // Operations
}
โดยที่typeคือประเภทของตัวแปร iterator (ซึ่งตรงกับประเภทข้อมูลของอิลิเมนต์ในอาร์เรย์!), itVarคือชื่อของมัน และarrayคืออาร์เรย์ (อนุญาตให้ใช้โครงสร้างข้อมูลอื่นๆ เช่น คอลเลกชันบางประเภท เช่นArrayList ) คือวัตถุที่ดำเนินการวนซ้ำ อย่างที่คุณเห็น โครงสร้างนี้ไม่ใช้ตัวนับ: ตัวแปรตัววนซ้ำจะวนซ้ำองค์ประกอบต่างๆ ของอาร์เรย์หรือคอลเล็กชัน เมื่อดำเนินการลูปดังกล่าว ตัวแปรตัววนซ้ำจะได้รับการกำหนดค่าของแต่ละองค์ประกอบของอาร์เรย์หรือคอลเลกชันตามลำดับ หลังจากนั้นบล็อกของคำสั่ง (หรือคำสั่ง) ที่ระบุจะถูกดำเนินการ

นอกจาก for-each แล้ว Java ยังมีเมธอด forEach() คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ในบทความเรื่อง"หยุดเขียนวนซ้ำ!" แนวทางปฏิบัติที่ดีที่สุด 10 อันดับแรกสำหรับการทำงานกับคอลเลกชันใน Java 8

บันทึก:สามารถใช้ for-each ลูปกับอาร์เรย์และคลาสใดๆ ที่ใช้อินเทอร์เฟซjava.lang.Iterable ลูป ต่อไปนี้จะเทียบเท่ากับโค้ดด้านบน:
for (int i=0; i < array.length; i++)
{

    // Statements
}

ตัวอย่างของ for-แต่ละวง

เราสร้างชุดคะแนนของนักเรียน จากนั้นเราจะใช้for-eachเพื่อพิมพ์ค่าประมาณทั้งหมด คำนวณคะแนนเฉลี่ย และหาคะแนนสูงสุด
public class ForEachTest {

// A method that prints all scores
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int num : scores) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

// A method that displays the average score

public static double getAverageScore(int[] numbers) {
        int totalScore = 0;

        for (int num : numbers) {
            totalScore = num + totalScore;
        }
        return ((double) totalScore / numbers.length);

    }
// A method that determines the best (maximum) score
    public static int getBestScore(int[] numbers) {
        int maxScore = numbers[0];

        for (int num : numbers) {
            if (num > maxScore) {
                maxScore = num;
            }
        }
        return maxScore;
    }

public static void main(String[] args) {

// Array of scores
int[] scores = {5, 10, 7, 8, 9, 9, 10, 12};


  int bestScore = getBestScore(scores);
        System.out.print("All the scores: ");
        printAllScores(scores);
        System.out.println("The highest score is " + bestScore);
        System.out.println("The average score is " + getAverageScore(scores));
    }

}
เอาต์พุตของโปรแกรม:
All the scores: |5|10|7|8|9|9|10|12|
The highest score is 12
The average score is 8.75
ทีนี้มาดูกันว่าเมธอดการพิมพ์คะแนนทั้งหมดจะเป็นอย่างไรถ้าเราใช้for loop แบบธรรมดา:
public static void printAllScores(int[] scores) {
        System.out.print("|");
        for (int i = 0; i < scores.length; i++) {

            System.out.print(scores[i] + "|");
        }
        System.out.println();
    }
หากเราเรียกใช้เมธอดนี้จาก เมธอด หลักเราจะได้ผลลัพธ์ดังนี้
All the scores: |5|10|7|8|9|9|10|12|

ตัวอย่างของ for-each วนกับคอลเลกชัน

เราสร้างชุดชื่อและแสดงชื่อทั้งหมดบนหน้าจอ
List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

ข้อจำกัดของ for-แต่ละวง

รูป แบบกะทัดรัดของ for-eachนั้นถือว่าอ่านง่ายกว่าforและถือเป็นแนวทางปฏิบัติที่ดีที่สุดในการใช้for-eachทุกครั้งที่เป็นไปได้ อย่างไรก็ตามfor-each loop นั้นมีโครงสร้างที่เป็นสากลน้อยกว่าfor loop ทั่วไป ต่อไปนี้คือบางกรณีง่ายๆ ที่for-eachวนซ้ำจะไม่ทำงานเลยหรือจะทำงานได้ยากเท่านั้น
  1. หากคุณต้องการวิ่งวนซ้ำจากจุดสิ้นสุดไปยังจุดเริ่มต้น นั่นคือไม่มีfor-eachลูปที่เป็นอะนาลอกโดยตรงกับโค้ดต่อไปนี้:

    for (int i= array.length-1; i>0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each ไม่เหมาะถ้าคุณต้องการเปลี่ยนแปลงอาร์เรย์ ตัวอย่างเช่น คุณไม่สามารถจัดเรียงอาร์เรย์โดยไม่เปลี่ยนตำแหน่งขององค์ประกอบ นอกจากนี้ ในโค้ดต่อไปนี้ เฉพาะตัวแปร iterator เท่านั้นที่จะเปลี่ยนแปลง ไม่ใช่องค์ประกอบของอาร์เรย์:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. หากคุณกำลังมองหาองค์ประกอบในอาร์เรย์และคุณต้องการส่งคืน (หรือส่งต่อ) ดัชนีขององค์ประกอบที่คุณกำลังมองหา จะเป็นการดีกว่าถ้าใช้ for loop แบบธรรมดา

วิดีโอที่เป็นประโยชน์เกี่ยวกับ for-each loop

วนซ้ำในหลักสูตร CodeGym

ใน CodeGym เราเริ่มฝึกการใช้ลูปที่ระดับ4 ของ Java Syntax quest บทเรียนหลายบทในระดับนั้น รวมถึงงานจำนวนมากในระดับต่างๆ ทุ่มเทให้กับการวนซ้ำเพื่อเสริมทักษะของคุณในการทำงานกับสิ่งเหล่านั้น โดยพื้นฐานแล้ว ไม่มีทางที่คุณจะหลีกเลี่ยงได้ — ลูปเป็นหนึ่งในโครงสร้างที่สำคัญที่สุดในการเขียนโปรแกรม

ข้อมูลเพิ่มเติมเกี่ยวกับ for-each และลูปอื่นๆ

  1. คำสั่ง while บทความนี้เกี่ยวกับชนิดของการวนซ้ำที่ง่ายที่สุด: การwhileวนซ้ำ ซึ่ง CodeGym ใช้เพื่อแนะนำการวนซ้ำให้กับนักเรียน
  2. หยุดเขียนซ้ำ! แนวทางปฏิบัติที่ดีที่สุด 10 อันดับแรกสำหรับการทำงานกับคอลเลกชันใน Java 8 บทความนี้จะช่วยให้นักเรียน CodeGym ที่เรียนมาอย่างน้อยครึ่งทางได้เรียนรู้สิ่งที่น่าสนใจมากมายเกี่ยวกับการทำงานกับคอลเลกชัน
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ