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 などをループします。

一度に 1 つずつステップを踏むと、それが理にかなっています。

于 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 ごとに、j も 1..3 からループする必要があります。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

2 番目のループを追加すると (1-3 としましょう) (上から下、左から右に読み、最初の数値は最初の変数を表すなど)

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

そして、3 番目のループ (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 に答える