简单嵌套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次。