CodeGym /จาวาบล็อก /สุ่ม /Java สำหรับลูป
John Squirrels
ระดับ
San Francisco

Java สำหรับลูป

เผยแพร่ในกลุ่ม
เมื่อ Mark Zuckerberg ตั้งข้อสังเกตว่าคอมพิวเตอร์นั้นดีมากในการทำซ้ำคำสั่ง ไม่ใช่เรื่องง่ายสำหรับมนุษย์ เราเริ่มเบื่อกับการทำสิ่งเดิมๆ ซ้ำๆ หลายๆ ครั้งติดต่อกัน แต่คอมพิวเตอร์สามารถทำได้นับล้านๆ พันล้านครั้งโดยไม่เคยเบื่อ หากคุณพยายามส่งคำทักทายไปยังผู้ใช้ Facebook ทุกคน คงไม่มีมนุษย์คนใดที่จะมีเวลาเพียงพอในการทักทาย อย่างไรก็ตาม คุณสามารถสร้างคอมพิวเตอร์เพื่อแก้ปัญหานี้ได้โดยเขียนโค้ดสองสามบรรทัด นี่คือวิธีการทำงานของลูป พวกเขาห้ามไม่ให้เราทำกิจวัตรเดิมซ้ำๆ ลูปที่ได้รับความนิยมมากที่สุดใน Java คือลูปที่กำหนดหรือสำหรับลูป

จะเขียน for loop ใน Java ได้อย่างไร? สำหรับลูปโดยทั่วไป

สำหรับลูปดำเนินการคำสั่งบางอย่างในจำนวนครั้งที่กำหนด ตัวอย่างเช่น การเขียนห้าสิบครั้งว่า “ฉันต้องไม่เป็นอย่างนั้น โฮ่ โฮ่ โฮ่ โฮ่” หรือส่งคำเชิญถึงเพื่อนๆ ทุกคนเป็นงานทั่วไปสำหรับลูปประเภทนี้ ไวยากรณ์ของ for loop เวอร์ชันที่พบมากที่สุด:

for ([counter initialization]; [checking conditions]; [changing of the counter])
{
    //  statements
}
นิพจน์การเริ่มต้นจะดำเนินการเพียงครั้งเดียว จากนั้นเงื่อนไขจะได้รับการประเมิน ซึ่งควรเป็นนิพจน์บูลีน
  • เมื่อลูปเริ่มต้น การเริ่มต้นจะดำเนินการ
  • เมื่อเงื่อนไขประเมินเป็นเท็จ ลูปของเราจะหยุดทำงาน
ตัวนับมีการเปลี่ยนแปลง โดยปกติการเพิ่มขึ้น (หรือการลดลง) จะเกิดขึ้นหลังจากการวนซ้ำแต่ละครั้งผ่านลูป คุณสามารถข้ามนิพจน์วนซ้ำหนึ่งในสามรายการ (การเริ่มต้น การตรวจสอบเงื่อนไข การเปลี่ยนตัวนับ) มีการตรวจสอบเงื่อนไขของลูปก่อนขั้นตอนถัดไปของลูป หากเงื่อนไขเป็นเท็จ โปรแกรมจะออกจากลูปและดำเนินการตามคำสั่งต่อไปตามโครงสร้าง for ที่นี่เรามีบล็อกไดอะแกรมของ for loop สำหรับการวนซ้ำใน Java - 2

วิธีใช้ for loop ใน Java ตัวอย่างง่ายๆ

นี่คือ Java เฉพาะสำหรับตัวอย่างลูป มาเขียน "สวัสดี!" สิบครั้งกันเถอะ สตริงแต่ละครั้งจะมาจากบรรทัดใหม่ด้วยหมายเลขของบรรทัดนี้ เราควรได้รับผลลัพธ์ถัดไป:
  1. สวัสดี!
  2. สวัสดี!
  3. สวัสดี!
  4. สวัสดี!
  5. สวัสดี!
  6. สวัสดี!
  7. สวัสดี!
  8. สวัสดี!
  9. สวัสดี!
  10. สวัสดี!
นี่คือโปรแกรม Java ของเราที่ช่วยแก้ปัญหานี้:

public class ForExample {
   public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           System.out.println(i + 1 + ". Hello!");
       }
   }
}

มันทำงานอย่างไร?

ขั้นตอนที่ 1 ตัวนับ i = 0 วนซ้ำตรวจสอบเงื่อนไขของเรา i << 10 ดังนั้นคำสั่งวนรอบจึงถูกดำเนินการ มันพิมพ์วลี "1. สวัสดี!" 1 เป็นสตริง i + 1 (เพราะเรานับจากศูนย์ แต่บรรทัดแรกยังคงเป็นบรรทัดแรก) ตัวนับ i เพิ่มขึ้น ตอนนี้ i = 1 ขั้นตอนที่ 2 เคาน์เตอร์ i = 1 i < 10 เราจึงมีวลี "2. สวัสดี!" และ i + 1 = 2 … ขั้นตอนที่ 10 ตัวนับ i = 9 เราได้ "10. สวัสดี!" และ i เพิ่มขึ้นเป็น 10 ขั้นตอนที่ 11 ตัวนับ i = 10 i < 10 ? ไม่ มันเป็นเรื่องเท็จ ดังนั้นการวนซ้ำจึงสิ้นสุดลง สำหรับการวนซ้ำใน Java - 3

ในขณะที่วนซ้ำและวนซ้ำ: ความแตกต่างและความคล้ายคลึงกัน

ใน Java indefinite loop หรือ while loop จะถูกดำเนินการอย่างต่อเนื่องหากเงื่อนไขบูลีนเป็นจริง ไวยากรณ์ของลูป while:

while (boolean condition)
       {
            loop statements...
       }
บ่อยครั้งที่คุณอาจเลือกได้ว่าต้องการใช้ลูปใด บางครั้งก็อยู่ใกล้กันมาก และคุณสามารถใช้ทั้งสองอย่างได้ ตัวอย่างเช่น นี่คือรหัสสำหรับงานเดียวกัน (เขียน "Hello!" สิบครั้งด้วยจำนวนบรรทัด) เขียนด้วย while loop:

public class ForAndForEach {
   public static void main(String[] args) {
       int j = 0;  //  we use the counter this way 
       while (j < 10) {
           System.out.println(j + 1 + ". Hello!");
           j++;
       }
   }
}
อย่างไรก็ตาม โปรแกรมเมอร์มืออาชีพไม่ชอบการวนซ้ำแบบ while และพยายามใช้การวนซ้ำทุกครั้งที่เป็นไปได้
สำหรับ ในขณะที่

เราใช้ for วนซ้ำหากเราทราบจำนวนการวนซ้ำแล้ว

เราใช้ while วนซ้ำหากเราไม่ทราบจำนวนการวนซ้ำที่แน่นอน

การกำหนดค่าเริ่มต้น การตรวจสอบเงื่อนไข และการเปลี่ยนตัวนับได้รวมอยู่ในไวยากรณ์ของลูปแล้ว

การเริ่มต้นและการตรวจสอบเงื่อนไขภายในลูป คุณสามารถใช้ตัวนับเพิ่มเติมในใบแจ้งยอด

วนซ้ำไม่สิ้นสุดสำหรับ:


for(;;){
	System.out.println("working...");
}

วนซ้ำไม่สิ้นสุดในขณะที่:


while(true){
	System.out.println("working...");
}

วิธีออกจาก for loop ใน java

โดยปกติแล้ว for loop จะทำงานเหมือนโฟลว์และวิธีธรรมชาติในการออกจากลูปคือเมื่อเงื่อนไขรับค่าเท็จ อย่างไรก็ตาม มีสองคำสั่งควบคุมที่อนุญาตให้คุณออกจากลูปก่อนที่คุณจะได้ค่าเท็จของเงื่อนไข นั่นคือ หยุดและดำเนินการต่อ
  • ตัวแบ่งช่วยให้ออกจากเนื้อหาของลูปปัจจุบันราวกับว่าเงื่อนไขของลูปได้รับการประเมินเป็นเท็จ
  • ทำต่อ ทำให้การวนซ้ำข้ามไปยังขั้นตอนถัดไป (วนซ้ำตัวนับ) โดยไม่ต้องดำเนินการตามคำสั่ง
เรามาแก้ปัญหาต่อไปโดยใช้ตัวแบ่งและดำเนินการต่อ เรามีชื่อมากมายและเราทักทายทุกคนจากแถวนี้ยกเว้นคนแปลกหน้า ดังนั้นหากเราพบสตริง "คนแปลกหน้า" ระหว่างลูป เราจะออกจากมัน (ออกไปและหยุดทักทายคนอื่น)

public class ForBreakExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
//  how to break out of a for loop, java: check if we have any "Stranger" in  //  our array            
if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               break;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
ผลลัพธ์ของการดำเนินการโปรแกรมของเราคือ:

Hello,Mike
Hello,Dustin
I don't chat with strangers
ดู? เราวิ่งหนีออกจากวงก่อนที่จะทักทายลูคัสและวิล ตอนนี้ให้ใช้ดำเนินการต่อเพื่อละเว้น "คนแปลกหน้า" แต่อยู่ในวงเพื่อทักทายเพื่อนคนอื่น ๆ

public class ForContinueExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
           if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
ผลลัพธ์คือ:

Hello,Mike
Hello,Dustin
I don't chat with strangers
Hello,Lucas
Hello,Will
ยอดเยี่ยม! เราทักทายเพื่อนทุกคนแต่ไม่ได้คุยกับคนแปลกหน้า

เวอร์ชันปรับปรุงของ for loop หรือ for-each

For-each เป็นประเภทของ for ลูปที่ใช้เมื่อคุณต้องการประมวลผลองค์ประกอบทั้งหมดของอาร์เรย์หรือคอลเลกชัน อันที่จริง วลี for-each ไม่ได้ใช้ในรอบนี้ ไวยากรณ์เป็นดังนี้:

for (type itVar: array)
{
    Block of operators;
}
โดยที่typeคือชนิดของตัวแปรวนซ้ำ (เหมือนกับชนิดข้อมูลของอาร์เรย์), ItVarคือชื่อของมัน, array คืออาร์เรย์ หรืออาจมีโครงสร้างข้อมูลอื่น เช่น ArrayList อย่างที่คุณเห็น ไม่มีตัวนับ ตัวแปรการวนซ้ำจะวนซ้ำองค์ประกอบของอาร์เรย์หรือคอลเลกชัน ไม่ใช่ค่าดัชนี เมื่อดำเนินการลูปดังกล่าว ตัวแปรการวนซ้ำจะได้รับการกำหนดค่าของแต่ละองค์ประกอบของอาร์เรย์หรือคอลเลกชันตามลำดับ หลังจากนั้นบล็อกคำสั่ง (หรือตัวดำเนินการ) ที่ระบุจะถูกดำเนินการ ข้อควรสนใจ: for-each ลูปสามารถนำไปใช้กับอาร์เรย์และคลาสใดๆ ที่ใช้อินเทอร์เฟซ java.lang.Iterable เรามาแก้ปัญหาเดิมด้วยการทักทายเพื่อนโดยไม่สนใจคนแปลกหน้า ("คนแปลกหน้า") แต่คราวนี้ใช้ for-each วนรอบ

public class ForEachExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
	//  for each loop, Java code
       for (String name : names) {
           if (name.equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("hello, " + name);
       }
   }
}
เพื่อเสริมสิ่งที่คุณได้เรียนรู้ เราขอแนะนำให้คุณดูบทเรียนวิดีโอจากหลักสูตร Java ของเรา

อ่านเพิ่มเติม:

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION