與大多數其他編程語言一樣,Java 支持嵌套循環。這意味著只是循環中的循環。在本文中,我們將了解如何在 Java 中使用嵌套循環。
Java 嵌套循環
如果一個循環被放置在另一個循環內,則稱為嵌套循環。在第一遍中,外循環調用內循環,內循環運行完成,之後控制權轉移到外循環的主體。在第二遍中,外循環再次調用內循環。依此類推,直到外循環結束。Java 中有四種類型的循環:-
for循環
-
while循環
-
做...while循環
-
for-each循環
Java 嵌套循環的工作原理
Java 中使用最多的循環可能是for,這在很大程度上是因為它非常通用並且使用它的代碼非常容易閱讀。下面是嵌套for循環的一般語法:// outer loop
for (initialization; condition; increment) {
//write here your code
//nested loop
for(initialization; condition; increment) {
//write here your code
}
..
}
他是如何工作的?外循環開始。然後嵌套的for循環開始工作並遍歷其索引直到滿足條件,然後再次將工作傳遞給外循環,直到滿足外循環的條件。聽起來有點棘手,不是嗎?嗯,結合具體的例子理解起來會容易很多,下面繼續說吧。
嵌套for循環代碼示例
這是一個經典的例子。讓我們使用兩個for循環打印出一個半金字塔。其中之一是嵌套的。public class NestedLoopsDemo1 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j<=i; j++)
System.out.print("*");
System.out.println();
}
}
}
輸出是:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
嵌套 while 循環代碼示例
public class NestedLoopsDemo2 {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
int j = 0;
while (j <= i) {
System.out.print("*");
j++;
}
System.out.println();
i++;
}
}
}
輸出與前面的示例相同:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
do ...while循環類似於while循環。主要區別在於, do...while循環的主體在表達式檢查之前執行一次。
嵌套的 foreach 循環代碼示例
for-each循環可以像通常的for循環一樣嵌套。下面是迭代二維數組的 嵌套for-each循環的示例。public class NestedLoops2 {
public static void main(String[] args)
{
int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };
for (int[] myArray : mainArray)
{
for (int i : myArray)
{
System.out.print(i+" ");
}
System.out.println("");
}
}
}
輸出是:
5 4 3 2 1 7 8 9 10 11
混合 for 和 while 循環示例
有時我們可以將不同類型的循環相互嵌套。例如,for inside while或for inside for-each。但是,這不是最佳的編程實踐。這樣的結構顯著削弱了代碼的可讀性。所以專業的程序員盡量不要把它們混在一起。好吧,他們會這樣做,但前提是確實需要。還有一個小規則:如果您在while和for之間進行選擇,請盡可能使用for 。儘管如此,這裡我們將有一個在while中使用for循環的例子。讓我們再次構建我們的半金字塔。public class NestedLoopsDemo2 {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
i++;
}
}
}
輸出毫無意外:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
GO TO FULL VERSION