การ วนลูป whileพบได้ในเกือบทุกภาษาการเขียนโปรแกรม และ Java ก็ไม่มีข้อยกเว้น การวนซ้ำ whileใน Java และภาษาอื่นๆ ดำเนินการคำสั่งหรือบล็อกของคำสั่งตราบเท่าที่ค่าของเงื่อนไขที่เรียกใช้งานนั้นเป็นจริง ในบทความนี้ เราจะพูดถึงวิธีการทำงานกับลูป while
วัฏจักรมีไว้เพื่ออะไร?
โปรแกรมแรกสุดของคุณคือลำดับของคำสั่งที่ดำเนินการทีละขั้นตอน โดยไม่ต้องส้อมและซ้ำ ต่อมาเราเริ่มใช้สาขาด้วยความช่วยเหลือของตัวดำเนินการตามเงื่อนไข ในการดำเนินการซ้ำ ๆ มีวัฏจักร บางทีวงจรอาจเป็นประโยชน์ที่ชัดเจนที่สุดอย่างหนึ่งสำหรับโปรแกรมเมอร์มือใหม่ที่กระบวนการทำงานอัตโนมัติมีให้ ลองนึกภาพว่าคุณต้องเขียนโปรแกรมติดตามที่นับจำนวนก้าวในหนึ่งวัน และเมื่อคุณผ่านไปได้ เช่น 10,000 ก้าว โปรแกรมควรส่งการแจ้งเตือนถึงคุณเกี่ยวกับเป้าหมายที่สำเร็จ งานในการออกการแจ้งเตือนสามารถแสดงเป็นคำพูด (หรือรหัสเทียม) ดังนี้:
While (number of steps less than 10,000)
{
Count steps
}
Send notification "you have reached the goal"
นั่นคือ ทันทีที่จำนวนก้าวเท่ากับที่ระบุในเงื่อนไข โปรแกรมจะออกจากวงจรนี้และส่งการแจ้งเตือน หรืออีกตัวอย่างหนึ่ง ลองนึกภาพว่าคุณต้องจำบทกวี (หรือสุนทรพจน์) บทกวีถือเป็นการจดจำหากคุณอ่านสามครั้งติดต่อกันโดยไม่แอบมอง หากคุณนึกภาพโปรแกรมที่จับภาพความพยายามของคุณในการท่องบทกวี มันจะต้องใช้การวนซ้ำด้วย:
While (success < 3)
learn a poem
มีการใช้โครงสร้างที่คล้ายกันนี้ในแอปเพื่อการศึกษาสมัยใหม่ทั้งหมดที่ใช้ เช่น ในการเรียนรู้ภาษาหรือเล่นเครื่องดนตรี
ลูป while และโครงสร้าง
ในการแก้ปัญหาดังตัวอย่างข้างต้นและโดยทั่วไป เพื่อทำให้การกระทำซ้ำๆ อัตโนมัติใน Java คุณสามารถใช้การวนรอบwhile ได้ Java while loop จะทำงานได้ดีในกรณีของเรา การออกแบบนี้จัดเตรียมการกระทำหลายอย่างในโครงสร้างที่กระชับและเข้าใจได้ คำ สั่ง วนรอบพบได้ในภาษาการเขียนโปรแกรมเกือบทั้งหมด มันทำซ้ำคำสั่งหรือบล็อกของคำสั่งตราบเท่าที่ค่าของนิพจน์ควบคุมเป็นจริง รูปแบบของ ลูป whileมีดังนี้
while(condition == true) {
// statement or loop body
}
เงื่อนไขต้องเป็นนิพจน์บูลีน นั่นคือเงื่อนไขที่สามารถพูดได้ว่าเป็นจริงหรือเท็จ นี่คือตัวอย่างบางส่วนของนิพจน์บูลีน:
s != "exit";
a > 5;
true;
เนื้อหาของลูปจะถูกดำเนินการตราบเท่าที่นิพจน์เงื่อนไขเป็นจริง เมื่อเงื่อนไขกลายเป็นเท็จ การควบคุมจะถูกถ่ายโอนไปยังบรรทัดของโค้ดที่อยู่หลังลูป หากใช้เพียงคำสั่งเดียวในลูป ก็สามารถละเว้นวงเล็บปีกกาได้ (แต่เป็นการดีกว่าที่จะไม่ทำเช่นนี้) นิพจน์เชิงตรรกะจะได้รับการประเมินก่อนการเริ่มต้นของลูป whileจากนั้นทุกครั้งก่อนที่จะดำเนินการคำสั่งซ้ำถัดไป
ในขณะที่ตัวอย่างลูป
มาเขียนโปรแกรมหาผลรวมตัวเลขทั้งหมดตั้งแต่ 1 ถึง 10 โดยใช้ ลูป while :
public class WhileTest0 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
//while loop
while (i < 11) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
ผลลัพธ์คือ:
55
เราจำเป็นต้องคำนวณผลรวมของตัวเลขทั้งหมดตั้งแต่ 1 (หรือจากศูนย์ก็ได้ ไม่สำคัญ) ถึง 10 เราทำให้ผลรวมเริ่มต้นและองค์ประกอบแรกเท่ากับศูนย์ และเราจะเพิ่มองค์ประกอบทีละหนึ่งในแต่ละรอบของ ห่วง เราจะหาผลรวมต่อไปจนกว่าอาร์กิวเมนต์จะเท่ากับ 10 (นั่นคือ น้อยกว่า 11 เราสามารถเขียนเงื่อนไขได้เหมือนกันi <= 10 ) ลองใช้ Java ในขณะที่ตัวอย่างลูป อื่น เราจะเขียนโปรแกรมโดยให้ผู้ใช้ป้อนจำนวนเต็มบวก หากป้อนเลขศูนย์หรือจำนวนลบ โปรแกรมควรรายงานสิ่งนี้และทำงานให้เสร็จ
import java.util.Scanner;
public class WhileTest {
public static void main(String[] args) {
int positiveNumber = 1;
Scanner scanner = new Scanner(String.valueOf(positiveNumber));
while (positiveNumber > 0) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter positive number:");
positiveNumber = sc.nextInt();
System.out.println("ok, next");
}
System.out.println("The number should be positive");
}
}
คุณสามารถปรับปรุงโปรแกรมและเพิ่มเข้าไปได้ เช่น ตรวจสอบว่าผู้ใช้ป้อนตัวเลขทั้งหมดและไม่ใช่อักขระอื่นหรือไม่ หรือตัวเลขนั้นเป็นจำนวนเต็ม
ทำในขณะที่วนซ้ำ
ลูป whileแบบคลาสสิกตามตัวอย่างด้านบนจะตรวจสอบทันทีเพื่อดูว่าเงื่อนไขเป็นจริงหรือไม่ ดังนั้นจึงสามารถเรียกได้ว่าเป็นวัฏจักรที่มีเงื่อนไขเบื้องต้น ลู ป whileมีพี่น้อง do- while ลูปที่มี postcondition นั่นคือ ก่อนการทดสอบความจริงของเงื่อนไขจะเกิดขึ้น ลูปดังกล่าวจะถูกดำเนินการอย่างน้อยหนึ่งครั้ง:
do {
// Loop body - periodically executed statement(s)
}while(Boolean expression);
ดังนั้นตัวอย่างแรกที่มีการวนซ้ำจะมีลักษณะดังนี้:
public class WhileTest0 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do
{
sum = sum + i;
i++;
} while (i < 11);
System.out.println(sum);
}
}
วัฏจักรที่ไม่มีที่สิ้นสุด
การ วน ซ้ำ whileสามารถใช้เพื่อจัดระเบียบการวนซ้ำไม่สิ้นสุดในรูปแบบwhile(จริง) : ตัวอย่างเช่น นี่คือโปรแกรมที่ไม่รู้จบ (ด้วยความแตกต่างบางประการ) พิมพ์ชุดจำนวนเต็ม:
public class EndlessLoop {
public static void main(String[] args) {
int i = 0;
while (true) {
System.out.println(i++);
}
}
}
เพื่อเสริมสิ่งที่คุณได้เรียนรู้ เราขอแนะนำให้คุณดูบทเรียนวิดีโอจากหลักสูตร Java ของเรา
GO TO FULL VERSION