0

私の Java 演習の中期では、コード行 (この場合は for ループ) の正確な出力を記述する必要があります。コードは次のとおりです。

for(int first = 3; first > 0; first--)
        for(int second = --first; second <= 5; second++)
            System.out.println(first + " " + second);

だから私は出力が次のようになると考えました:

2 2
2 3
2 4
2 5

しかし、Ecplipseで実行すると、次のようになります。

2 2
2 3
2 4
2 5
0 0
0 1
0 2
0 3
0 4
0 5

「秒 <= 5」のために「秒」が 5 から 0 になる方法は理解していますが、「最初」も 0 にリセットされる方法がわかりません。

答えを求めてあちこち探しましたが、見つかりませんでした。これがどのように機能するかについての助けは素晴らしいでしょう。ありがとう!

4

1 に答える 1

3

2 回デクリメントしています。first外側のループが反復するたびに 1 回、内側のループ反復を開始するたびに 1 回です。

したがって、印刷後2 5、内側のループの最後にヒットfirst--し、外側のループからヒットします。次に、再び内側のループに戻ると、他のものをint second = --first出力する前にヒットします。したがって、2 から 0 になります。

個人的には、次のような記述は避けようとしint second = --first;ます - 副作用はしばしば混乱を引き起こします。

于 2013-10-20T19:31:51.180 に答える