8

目前我正在为我的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

为什么不是这样?

4

7 回答 7

14

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

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

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

于 2009-03-18T02:20:38.293 回答
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

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

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

于 2009-03-18T02:22:44.170 回答
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 );

现在有意义吗?

于 2009-03-18T02:24:37.237 回答
1

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

于 2009-03-18T02:20:34.797 回答
1

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

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

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

于 2009-03-18T02:21:53.827 回答
1

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

于 2009-03-18T02:31:53.523 回答
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 次。

于 2009-03-18T02:35:02.097 回答