Java ในขณะที่วนซ้ำ



ชวา

Java while loop เป็นอีกคำสั่งควบคุมลูปที่รันชุดของคำสั่งตามเงื่อนไขที่กำหนด ในบทช่วยสอนนี้เราจะพูดถึงรายละเอียดเกี่ยวกับ java while loop เมื่อเทียบกับ สำหรับห่วงในขณะที่ลูปไม่มีจำนวนการวนซ้ำคงที่ ไม่เหมือน for loop ขอบเขตของตัวแปรที่ใช้ใน java ในขณะที่ loop ไม่ จำกัด อยู่ใน loop เนื่องจากเราประกาศตัวแปรนอกลูป

Java ในขณะที่วนซ้ำไวยากรณ์

while(test_expression) {
  //code
  update_counter;//update the variable value used in the test_expression
}

test_expression - นี่คือเงื่อนไขหรือนิพจน์ที่ขึ้นอยู่กับการทำงานของลูป while หากเงื่อนไขเป็นจริงจะรันโค้ดภายในลูป while หากเป็นเท็จจะออกจากลูป while

update_counter - เป็นการอัพเดตค่าตัวแปรที่ใช้ในเงื่อนไขของ java while loop หากเราไม่ระบุสิ่งนี้อาจส่งผลให้เกิดการวนซ้ำแบบไม่สิ้นสุด

วิธีการทำงานในขณะที่ลูป

ผังงานด้านล่างแสดงให้คุณเห็นว่า java while ห่วงทำงาน

Java ในขณะที่วนซ้ำ

 

  • เมื่อการควบคุมการดำเนินการชี้ไปที่คำสั่ง while ขั้นแรกจะประเมินเงื่อนไขหรือนิพจน์ทดสอบ เงื่อนไขสามารถเป็นประเภทใดก็ได้ ผู้ประกอบการ.
  • หากเงื่อนไขคืนค่า a จริง ค่ามันรันโค้ดภายในลูป while
  • มันแล้ว การปรับปรุง ค่าตัวแปรจะเพิ่มขึ้นหรือลดลงของตัวแปร สิ่งสำคัญคือต้องรวมรหัสนี้ไว้ใน java while loop มิฉะนั้นอาจส่งผลให้ javawhile loop ไม่สิ้นสุด เราจะพูดถึงการวนซ้ำที่ไม่มีที่สิ้นสุดในตอนท้ายของบทช่วยสอน
  • การควบคุมอีกครั้งชี้ไปที่คำสั่ง while และทำซ้ำขั้นตอนข้างต้น
  • เมื่อเงื่อนไขคืนค่า a เท็จ ค่ามันออกจาก java while loop และดำเนินการต่อด้วยการดำเนินการของคำสั่งนอกลูป while

ตัวอย่าง Simple java while loop

ด้านล่างนี้เป็นโค้ดง่ายๆที่สาธิต java while loop

public class simpleWhileLoopDemo {

  public static void main(String[] args) {
    int i=1;
    while(i<=5) {
      System.out.println("Value of i is: " + i);
      i++;
    }

  }

}
Value of i is: 1
Value of i is: 2
Value of i is: 3
Value of i is: 4
Value of i is: 5

ก่อนอื่นเราประกาศตัวแปร int i และเริ่มต้นด้วยค่า 1 ในเงื่อนไข while เรามีนิพจน์เป็น ฉัน <= 5ซึ่งหมายความว่าจนถึง i ค่าน้อยกว่าหรือเท่ากับ 5 จะดำเนินการวนซ้ำ

ดังนั้นในการทำซ้ำครั้งแรกเมื่อ i = 1เงื่อนไขเป็นจริงและพิมพ์คำสั่งภายใน java while loop จากนั้นเพิ่มขึ้น i ค่าโดย 1 ซึ่งหมายถึงตอนนี้ i = 2.

จากนั้นตรวจสอบอีกครั้งว่า ฉัน <= 5. เนื่องจากเป็นความจริงจึงรันโค้ดภายในลูปอีกครั้งและเพิ่มค่า

ทำซ้ำขั้นตอนข้างต้นจนกระทั่ง i = 5. ในขั้นตอนนี้หลังจากรันโค้ดภายใน while loop i เพิ่มมูลค่าและ i = 6. ตอนนี้เงื่อนไขจะคืนค่าเป็นเท็จและออกจาก java ในขณะที่วนซ้ำ

ในขณะที่วนซ้ำใน Array

คล้ายกับ for วนซ้ำเรายังสามารถใช้ java ในขณะที่วนซ้ำเพื่อดึงองค์ประกอบอาร์เรย์ ในตัวอย่างด้านล่างเราดึงองค์ประกอบอาร์เรย์และหาผลรวมของตัวเลขทั้งหมดโดยใช้ while loop

public class whileLoopArray {

  public static void main(String[] args) {
    int[] numbers = {20,10,40,50,30};
    int i=0;
    int sum=0;
    while(i<numbers.length) {
      sum = sum+numbers[i];
      i=i+1;
    }
    System.out.println("Sum of array elements: " + sum);
    System.out.println("Length of array: " + i);
  }

}
Sum of array elements: 150
Length of array: 5

คำอธิบาย:

ขั้นแรกเราเริ่มต้นอาร์เรย์ของจำนวนเต็ม ตัวเลข และประกาศตัวนับ java ในขณะที่วนซ้ำ ตัวแปร i. เนื่องจากเป็นอาร์เรย์เราจึงต้องสำรวจองค์ประกอบทั้งหมดในอาร์เรย์จนถึงองค์ประกอบสุดท้าย สำหรับสิ่งนี้เราใช้ความยาว วิธี ภายในเงื่อนไข java while loop ซึ่งหมายความว่า while ลูปทำงานจนถึง i ค่าถึงความยาวของอาร์เรย์

การวนซ้ำ 1 เมื่อ i = 0: เงื่อนไข: จริง sum = 20, i = 1

การวนซ้ำ 2 เมื่อ i = 1: เงื่อนไข: จริง sum = 30, i = 2

การวนซ้ำ 3 เมื่อ i = 2: เงื่อนไข: จริง sum = 70, i = 3

การวนซ้ำ 4 เมื่อ i = 3: เงื่อนไข: จริง sum = 120, i = 4

การวนซ้ำ 5 เมื่อ i = 4: เงื่อนไข: จริง sum = 150, i = 5

การทำซ้ำ 6 เมื่อ i = 5: condition: false -> ออก while ห่วง

โปรดดูที่ของเรา อาร์เรย์ใน java บทช่วยสอนเพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับอาร์เรย์

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

ตามที่กล่าวไว้ในตอนต้นของบทช่วยสอนเมื่อเราไม่อัปเดตตัวแปรตัวนับอย่างถูกต้องหรือไม่ได้กล่าวถึงเงื่อนไขอย่างถูกต้องจะส่งผลให้ไม่มีที่สิ้นสุด while วน ลองดูสิ่งนี้พร้อมตัวอย่างด้านล่าง

public class infiniteWhileLoop {

  public static void main(String[] args) {
    int i = 0;
    while(i>=0) {
      System.out.println(i);
      i++;
    }

  }

}

ที่นี่เราได้เริ่มต้นตัวแปร ด้วยค่า 0 ในเงื่อนไข java while loop เรากำลังตรวจสอบว่า i ค่ามากกว่าหรือเท่ากับ 0 เนื่องจากเรากำลังเพิ่มขึ้น i ค่าภายในลูป while เงื่อนไข ฉัน> = 0 ในขณะที่ส่งกลับเสมอ จริง คุ้มค่าและจะดำเนินการอย่างไม่มีที่สิ้นสุด

นอกจากนี้เรายังสามารถมี java แบบไม่สิ้นสุดในขณะที่วนซ้ำได้อีกวิธีหนึ่งดังที่คุณเห็นในตัวอย่างด้านล่าง นี่คือค่าของตัวแปร bFlag เป็นจริงเสมอเนื่องจากเราไม่ได้อัปเดตค่าตัวแปร

public class infiniteWhileLoop {

  public static void main(String[] args) {
    Boolean bFlag = true;
    while(bFlag) {
      System.out.println("Infinite loop");
    }

  }

}

ดังนั้น java ที่ไม่มีที่สิ้นสุดในขณะที่ลูปเกิดขึ้นใน 2 เงื่อนไขต่ำกว่า สิ่งสำคัญคือต้องจำ 2 จุดนี้ไว้เสมอเมื่อใช้ while loop

  • เมื่อเราไม่อัปเดตค่าตัวแปร
  • เมื่อเราไม่ใช้เงื่อนไขใน while loop อย่างถูกต้อง

ซ้อนกันในขณะที่วนซ้ำ

นอกจากนี้เรายังสามารถซ้อนในขณะที่วนซ้ำใน java ที่คล้ายกับไฟล์ for วน เมื่อมีการวนซ้ำหลายครั้งเราเรียกมันว่าซ้อนกันในขณะที่ลูป

public class Nestedwhileloop {

  public static void main(String[] args) {
    int i=1,j=10;
    while(i<=5) {
      System.out.println("i: " + i);
      i++;
      while(j>=5) {
        System.out.println("j: " + j);
        j--;
      }
    }

  }

}
i: 1
j: 10
j: 9
j: 8
j: 7
j: 6
j: 5
i: 2
i: 3
i: 4
i: 5

ในตัวอย่างนี้เรามี 2 while ลูป ด้านนอกในขณะที่วนซ้ำจนกว่า ฉัน <= 5 และด้านในขณะที่วนซ้ำจนกว่า j> = 5.

เมื่อ i = 1เงื่อนไขเป็นจริงและพิมพ์ i มูลค่าแล้วเพิ่มขึ้น i ค่าโดย 1 จากนั้นดำเนินการด้านใน while ลูปด้วยค่า j = 10. เนื่องจากสภาพ j> = 5 เป็นจริงมันพิมพ์ค่า j ตอนนี้มันยังคงดำเนินการของ inner while loop จนครบตามเงื่อนไข j> = 5 ส่งคืนเท็จ เมื่อเป็นเท็จแล้วจะดำเนินการต่อด้วยการดำเนินการด้านนอกในขณะที่วนซ้ำจนถึง ฉัน <= 5 ส่งคืนเท็จ

นี่คือเหตุผลว่าทำไมในผลลัพธ์ที่คุณสามารถเห็นได้หลังจากการพิมพ์ i = 1มันดำเนินการทั้งหมด j ค่าเริ่มต้นด้วย j = 10 จนกระทั่ง j = 5 แล้วพิมพ์ i ค่าจนถึง i = 5. เมื่อ i = 2มันไม่ได้ดำเนินการภายใน while วนซ้ำเนื่องจากเงื่อนไขเป็นเท็จ

Java ในขณะที่วนซ้ำกับหลายเงื่อนไข

เราสามารถมีหลายเงื่อนไขที่มีตัวแปรหลายตัวใน java while loop ในตัวอย่างด้านล่างเรามี 2 ตัวแปร a และ i เริ่มต้นด้วยค่า 0 ที่นี่เราจะพิมพ์ตัวเลขคู่ระหว่าง 0 ถึง 20 สำหรับสิ่งนี้ภายใน java while loop เรามีเงื่อนไข ก <= 10ซึ่งเป็นเพียงตัวแปรตัวนับและเงื่อนไขอื่น ((ผม% 2) == 0) เพื่อตรวจสอบว่าเป็นเลขคู่หรือไม่ ภายใน java while loop เราจะเพิ่มตัวแปรตัวนับ a โดย 1 และ i มูลค่า 2.

public class Whileloopconditions {

  public static void main(String[] args) {
    int a = 0;
    int i = 0;
    System.out.println("Even numbers between 0 to 20:");
    while((a<=10) && ((i%2)==0)) {
      System.out.println(i);
      a++;
      i=i+2;
    }
  }

}
Even numbers between 0 to 20:
0
2
4
6
8
10
12
14
16
18
20

การอ้างอิง