JavaRush /จาวาบล็อก /Random-TH /สำหรับลูปใน Java

สำหรับลูปใน Java

เผยแพร่ในกลุ่ม
ว่ากันว่าโปรแกรมเมอร์ที่ดีที่สุดคือโปรแกรมเมอร์ที่ขี้เกียจ แทนที่จะทำการกระทำแบบเดิมหลายๆ ครั้ง เขากลับมาพร้อมกับอัลกอริทึมที่จะทำหน้าที่แทนเขา และเขาจะทำมันให้ดีโดยที่ไม่ต้องทำซ้ำอีก วิธีใช้ for loop ใน Java - 1เพื่อหลีกเลี่ยงการเขียนโค้ดเดิมซ้ำแล้วซ้ำอีก จึงมีการคิดค้นลูปขึ้น ลองจินตนาการว่าเราจำเป็นต้องแสดงตัวเลขตั้งแต่ 0 ถึง 99 บนคอนโซล รหัสที่ไม่มีการวนซ้ำ:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
รหัสนี้จะใช้เวลา 100 บรรทัด! มากมาย. และนี่คือลักษณะของการวนซ้ำ:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
แค่ 3 บรรทัด!

สำหรับลูปคืออะไร?

for loopเป็นโครงสร้างการควบคุมของโค้ดโปรแกรมที่แบ่งเชิงเส้นของการดำเนินการของอัลกอริทึมและช่วยให้คุณสามารถรันโค้ดที่ระบุได้หลายครั้ง เช่น คุณต้องกินยา 30 หยด อัลกอริทึมจะเป็นดังนี้:
  1. เตรียมแก้ว.
  2. เปิดฝา
  3. รับ 1 หยด
  4. รับ 2 หยด
  5. ...
  6. รับ 30 หยด
  7. ปิดยา.
  8. รับส่วนที่ได้รับ
อัลกอริทึมนี้สามารถอธิบายได้รวดเร็วยิ่งขึ้น:
  1. เตรียมแก้ว.
  2. เปิดฝาหยด
  3. รับ 30 หยด
  4. ปิดยา.
  5. รับส่วนที่ได้รับ
เราใช้ for loop เกือบทุกวันในการสนทนากับคนอื่นๆ: “...20 ก้าวไปตามถนน...”, “...ทำซ้ำ 10 ครั้งและอีก 5 ครั้งช้าลง 2 เท่า...”, “.. .ซื้อครบ 5 หมวดหมู่ ก็ได้รางวัล…” พูดได้ยาวๆ แต่ความหมายชัดเจน ใน Java for loop เป็นสิ่งจำเป็นในการทำให้โค้ดของคุณสั้นและกระชับ

for loop ทำงานอย่างไร

for loop ถูกใช้ดังนี้:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
บทสรุป:

0
1
2
3
4
หากเราแปลรายการนี้เป็นภาษามนุษย์ เราจะได้สิ่งต่อไปนี้: “ สร้างตัวแปร i ด้วยค่าเริ่มต้นเป็น 0 จนกระทั่งถึง 5 เพิ่ม 1 เข้าไป และในแต่ละขั้นตอนให้เขียนค่า i ไปที่คอนโซล ” for loop ใน Java ขึ้นอยู่กับสามขั้นตอน ซึ่งสามารถแสดงได้ด้วยไดอะแกรมต่อไปนี้: วิธีใช้ for loop ใน Java - 2เงื่อนไขสำหรับการออกจากลูปคือนิพจน์บูลีน หากเป็นเท็จ การวนซ้ำจะสิ้นสุด ในตัวอย่างข้างต้น ตัวแปรiจะเพิ่มขึ้นทีละ 1 หากค่าของมันน้อยกว่า 5 การวนซ้ำจะดำเนินต่อไป แต่ทันทีที่iมันมากกว่าหรือเท่ากับ 5 วงจรจะหยุดลง ตัวดำเนินการตัวนับคือนิพจน์ที่ทำการแปลงตัวแปรตัวนับ ในตัวอย่างข้างต้น ตัวแปรiเพิ่มขึ้น 1 นั่นคือ ลูปจะถูกดำเนินการ 5 ครั้งพอดี หากตัวดำเนินการตัวนับบวก 2 เข้ากับตัวแปรiผลลัพธ์จะแตกต่างออกไป:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
บทสรุป:

0
2
4
คุณยังสามารถคูณตัวแปร หาร เพิ่มกำลัง โดยทั่วไป ทำทุกอย่างที่คุณต้องการ สิ่งสำคัญคือการเปลี่ยนแปลงส่งผลให้เกิดตัวเลข เนื้อความของลูปคือโค้ดใดๆ ก็ตามที่สามารถดำเนินการได้ ในตัวอย่างด้านบน เนื้อความของลูปกำลังส่งออกค่าของตัวแปร i ไปยังคอนโซล แต่เนื้อหาของเนื้อหานี้ถูกจำกัดด้วยงานและจินตนาการ โดยสรุปโครงร่างทั้งหมด หลักการของ for loop นี้มีดังนี้: โค้ดที่อยู่ในเนื้อหาของลูปจะถูกดำเนินการหลายครั้งตามจำนวนการแปลงที่ตัวดำเนินการตัวนับจะดำเนินการก่อนที่จะถึงเงื่อนไขสำหรับการออกจากลูป . หากคุณตั้งค่าเงื่อนไขการออกลูปเป็นtrue:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
จากนั้นโค้ดหลังลูปจะถูกทำเครื่องหมายด้วยข้อผิดพลาดunreachable statementเนื่องจากจะไม่มีการดำเนินการ ความท้าทายสำหรับความฉลาด: จากการรันโค้ดด้านล่าง “ Loop ended” จะถูกส่งออกไปยังคอนโซลหรือลูปจะทำงานอย่างไม่มีที่สิ้นสุดหรือไม่?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
คำตอบ: จะมี. ตัวแปร i จะถึงค่าสูงสุดไม่ช้าก็เร็ว และการเพิ่มขึ้นอีกจะเปลี่ยนเป็นค่าลบสูงสุด ซึ่งส่งผลให้เงื่อนไขการออกเป็นที่น่าพอใจ (i < = -1)

สำหรับแต่ละวง

เมื่อทำงานกับลูป บางครั้งคุณต้องวนซ้ำอาร์เรย์หรือคอลเลกชั่น โดยทั่วไปคุณสามารถวนซ้ำผ่านอาร์เรย์โดยใช้ for loop:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
และมันก็ถูกต้อง อย่างไรก็ตาม เพื่อวนซ้ำองค์ประกอบทั้งหมดของอาเรย์ทีละรายการ พวกเขาจึงได้มีโครงสร้าง forEach ขึ้นมา ลายเซ็นมีดังนี้:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
คุณสามารถวนซ้ำอาร์เรย์ของสตริงและพิมพ์แต่ละรายการไปยังคอนโซลได้ด้วยวิธีต่อไปนี้:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
สั้นกระชับอีกด้วย ที่สำคัญไม่ต้องคิดเรื่องเคาน์เตอร์และสภาพทางออกทุกอย่างให้เราเรียบร้อยแล้ว

วิธีการใช้ลูป

ตอนนี้เรามาดูตัวอย่างบางส่วนของการใช้ for loop ใน Java เพื่อแก้ไขปัญหาต่างๆ

วงจรย้อนกลับ (จากใหญ่ไปเล็ก)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
บทสรุป:

5
4
3
2
1

ตัวแปรหลายตัวและการเพิ่มตัวนับในตัวลูป

คุณสามารถใช้ตัวแปรหลายตัวใน for loop ได้ ตัวอย่างเช่น สามารถแปลงตัวแปรเหล่านั้นเป็นคำสั่ง counter ได้:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
บทสรุป:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
หรือประกาศตัวแปรสองตัวแล้ววนซ้ำจนกว่าตัวแปรทั้งสองจะเท่ากัน:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
บทสรุป:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
ไม่น่าเป็นไปได้ที่การกระทำนี้จะมีคุณค่าใดๆ แต่การทราบเกี่ยวกับความเป็นไปได้นี้ก็มีประโยชน์ คุณยังสามารถสร้างลูปภายในภายใน for loop ได้ ในกรณีนี้ จำนวนขั้นตอนการวนซ้ำจะถูกคูณ:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
บทสรุป:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
ในลูปตัวนับjสามารถเข้าถึงตัวนับของลูปด้านนอกได้ ซึ่งทำให้การวนซ้ำแบบซ้อนเป็นวิธีที่ดีเยี่ยมในการสำรวจอาร์เรย์สองมิติ สามมิติ และอาร์เรย์อื่นๆ:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
บทสรุป:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

เสร็จสิ้นวงจรก่อนเวลา

หากคุณต้องการขัดจังหวะลูปขณะประมวลผลลูป ให้ใช้ตัวดำเนินการbreakซึ่งหยุดเนื้อหาปัจจุบันของลูป การวนซ้ำครั้งต่อๆ ไปทั้งหมดจะถูกข้ามไปเช่นกัน:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
วิธีการจะพิมพ์ตำแหน่งขององค์ประกอบที่ค้นหาแรกในอาร์เรย์:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
บทสรุป:

1

วงจรที่ไม่มีที่สิ้นสุด

อีกวิธีหนึ่งในการสร้าง for loop แบบไม่มีที่สิ้นสุดคือการปล่อยให้พื้นที่การประกาศตัวนับ เงื่อนไขการออก และคำสั่งตัวนับว่างเปล่า:
for (;;) {
}
แต่โปรดจำไว้ว่าในกรณีส่วนใหญ่ การวนซ้ำไม่สิ้นสุดถือเป็นหลักฐานของข้อผิดพลาดเชิงตรรกะ การวนซ้ำดังกล่าวจะต้องมีเงื่อนไขการออก วิธีใช้ for loop ใน Java - 3
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION