简单嵌套for循环示例

目前我正在攻读我的Java测试。 惠斯特学习我遇到了一个小问题。

在这个for循环中:

for ( int i=1; i <= 3 ; i++ ) { for (int j=1; j <= 3 ; j++ ) { System.out.println( i + " " + j ); } } 

输出是:

 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 

我的问题是,我不明白。 当我读到这段代码时,我一直认为它应该是这样的:

 1 1 2 2 3 3 

为什么不是这样?

i的每次迭代,你都开始了一个全新的j迭代。

所以,你从i == 1开始,然后在循环中j == 1,2,3。 然后我= = 2,然后循环中的j == 1,2,3等。

一步一步地完成它,这将是有道理的。

你拥有的是另一个循环。 把它想象成分针和时钟上的时针。 当时针仍在1时,分针将绕(1,2,3,4 … 59)。因此,如果我们将小时视为i,将分钟视为j,我们有:

1 1
1 2
1 3

1 60

然后小时变为2,分针一直在四处走动:
2 1
2 2
2 3

2 60

一旦我们到达,我们就完成了

12 1
12 2
12 3

12 60

这是循环结束的地方。 你的例子很像这样。

(对于迂腐者,我知道它是从零开始的,但为了说明,这可能更容易理解)

让我们来看看如果我们从循环变为重复代码会是什么样子。 首先是外循环:

 for (int j=1; j <= 3 ; j++ ) { System.out.println( 1 + " " + j ); } for (int j=1; j <= 3 ; j++ ) { System.out.println( 2 + " " + j ); } for (int j=1; j <= 3 ; j++ ) { System.out.println( 3 + " " + j ); } 

现在内循环:

 // First loop System.out.println( 1 + " " + 1 ); System.out.println( 1 + " " + 2 ); System.out.println( 1 + " " + 3 ); // Second loop System.out.println( 2 + " " + 1 ); System.out.println( 2 + " " + 2 ); System.out.println( 2 + " " + 3 ); // Third loop System.out.println( 3 + " " + 1 ); System.out.println( 3 + " " + 2 ); System.out.println( 3 + " " + 3 ); 

现在有意义吗?

外部用于“抓住”内部并迭代IT。 即,你在for循环中有一个for循环。 对于1..3范围内的每个i,您还必须从1..3循环j。 当我变为2时,j重置为1,内循环再次运行。

你在另一个循环中有一个循环。

因此,对于外部循环的每次迭代,您将运行内部循环以完成,从1开始以3结束。

因此,对于i的每个值,最终打印j = 1,2,3。 在这种情况下,我是1,2和3。

对于外循环的每次迭代,将执行完整的内循环。 例如,当i = 1时,内部循环将执行3次,您将获得1 1 1 2 1 3

每次嵌套for循环(当你将一个放在另一个循环中时调用它),它基本上会添加另一个“维度”。 如果你有一个for循环,它就像一条直线。 所以,如果我们的第一个循环是从1到5,它将是:
1 2 3 4 5

如果你添加第二个循环,(比方说1-3)(你从上到下从左到右阅读,第一个数字代表第一个变量,等等)

11 21 31 41 51
12 22 32 42 52
13 23 33 43 53

如果你添加第三个循环(让我们说1-2)(我显然不能在这里制作3个维度,所以请耐心等待)

111 211 311 411 511 || 112 212 312 412 512
121 221 321 421 521 || 122 222 322 422 522
131 231 331 431 531 || 132 232 332 432 532

因此,迭代的总次数(通过循环的次数)是循环的乘积。 这个是3 * 5 * 2,所以它会迭代30次。