与大多数其他编程语言一样,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