1. breakคำสั่ง

ลองดูตัวอย่างจากบทเรียนที่แล้ว:

รหัส คำอธิบาย
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
โปรแกรมจะอ่านบรรทัดจากแป้นพิมพ์ จนกว่าคุณจะ"exit"ป้อน

โปรแกรมอ่านบรรทัดจากคอนโซลจนกว่าexitจะป้อน คำ ถ้าคุณป้อนคำนี้isExit ตัวแปรจะกลายเป็นtrueเงื่อนไขลูปจะเป็นและลูปจะสิ้นสุด"!isExitfalse

Java มีคำสั่งพิเศษbreakที่ช่วยให้คุณลดความซับซ้อนของตรรกะดังกล่าว หากbreakคำสั่งถูกดำเนินการภายในลูป การวนซ้ำจะสิ้นสุดลงทันที โปรแกรมจะเริ่มดำเนินการตามคำสั่งที่วนซ้ำ ข้อความสั้นมาก:

break;

ต่อไปนี้คือวิธีที่คุณสามารถใช้breakคำสั่งเพื่อเขียนตัวอย่างที่เราเพิ่งกล่าวถึงใหม่:

รหัส คำอธิบาย
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
โปรแกรมจะอ่านบรรทัดจากแป้นพิมพ์ จนกว่าคุณจะ"exit"ป้อน


2. ต่อข้อความ

แต่breakไม่ใช่คำสั่ง Java เดียวที่ให้คุณควบคุมพฤติกรรมของลูป Java ยังมีcontinueคำสั่ง หากคุณดำเนินcontinueการคำสั่งภายในลูป การวนซ้ำปัจจุบันจะสิ้นสุดก่อนกำหนด

การดำเนินการตัวลูปหนึ่งครั้งเรียกว่าการวนซ้ำ คำcontinueสั่งขัดจังหวะการวนซ้ำปัจจุบันของลูป แต่ไม่เหมือนกับbreakคำสั่งตรงที่จะไม่สิ้นสุดการวนซ้ำ แถลงการณ์สั้น ๆ :

continue;

คำสั่ง นั้นcontinueสะดวกมากในการวนซ้ำหากเราต้องการ 'ข้าม' การดำเนินการของเนื้อความวนซ้ำในบางสถานการณ์

งาน: เราต้องการเขียนโปรแกรมที่พิมพ์ตัวเลขจาก1ถึง20แต่ข้ามตัวเลขที่หาร7ด้วย นี่คือลักษณะของโค้ดนี้

รหัส คำอธิบาย
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
โปรแกรมแสดงตัวเลขตั้งแต่1ถึง 20หากตัวเลขหารด้วย7(เศษที่เหลือของการหารด้วย7คือ0) เราจะข้ามการแสดงตัวเลขไป

ที่จริงแล้ว รหัสนี้จะใช้งานไม่ได้เพราะiจะติดอยู่ที่หมายเลขตลอด7ไป ท้ายที่สุด คำสั่งจะข้ามคำสั่ง อื่นcontinueอีกสองคำสั่ง: System.out.println(i)และ i++ดังนั้น เมื่อเราถึงค่า ตัวแปร7จะiหยุดการเปลี่ยนแปลง และเราจะอยู่ในลูปที่ไม่มีที่สิ้นสุด

เราเขียนโค้ดด้วยวิธีนี้โดยมีวัตถุประสงค์เพื่อแสดงข้อผิดพลาดทั่วไปนี้ เราจะแก้ไขอย่างไร?

มีสองตัวเลือกที่นี่:

ตัวเลือกที่ 1:เปลี่ยนiก่อนดำเนินการcontinueแต่หลังจากi % 7

ตัวเลือกที่ 2:เพิ่มขึ้นเสมอiที่จุดเริ่มต้นของลูป แต่iค่าเริ่มต้นจะต้อง0เป็น

ตัวเลือกที่ 1 ตัวเลือก 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}