简单嵌套for循环示例

时间:2009-03-18 02:18:38

标签: java for-loop

目前我正在攻读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

为什么不是这样?

7 个答案:

答案 0 :(得分:14)

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

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

一步一步地完成它,这将是有意义的。

答案 1 :(得分:6)

你拥有的是另一个循环。把它想象成时针上的分针和时针。分针即将到来(1,2,3,4 ... 59),而时针仍然是1.因此,如果我们将小时视为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

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

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

答案 2 :(得分:3)

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

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 );

现在有意义吗?

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

所以你最终为i的每个值打印j = 1,2,3。在这种情况下,我是1,2和3。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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