0

私はその瞬間に私のSCJA試験のために改訂し、この質問と回答に混乱しています。問題は、コードを実行してコンパイルした結果はどうなるかということです。

    public class Test{ 
       public static void main(String args[]){
         int counter = 0;
         for(int i=0; i< 4; ++i){
            for(int k=0; k< 4; ++k){
               system.out.println("Hello - "+ ++counter);
               if((k % 4) == 0)
               break;
            }
         }
       }
    }

したがって、彼らが与える答えは、0%4 = 0であるため、「Hello-1」です。しかし、私の質問は、事前にインクリメントされているため、kを1にすべきではないということです。

前もって感謝します!

4

3 に答える 3

2

for ループの構造は次のとおりです。

for (initialization; condition; update)

は、ループの実行ごとに実行updateされます。

したがって、次の 2 つのループは同一です。

for (int i = 0; i < 10; i++) {

for (int i = 0; i < 10; ++i) {
于 2013-02-16T16:32:16.137 に答える
1

私の質問は、k事前にインクリメントされているため、1 であってはなりませんか?

これ++kは、ループ反復の最後、つまりステートメントのに発生します。if

++kかどうかは関係ありませんk++。いずれの場合も、 の最初の値kはゼロです。

だから彼らが与える答えは"Hello-1"

counterはインクリメントされず、プログラム全体でゼロのままであるため、これは明らかに正しくありません。

于 2013-02-16T16:31:46.140 に答える
0

k を 1 にすることはできません。これは、for ループが実行されると、ループ内のすべてのコードが実行された後にのみ更新されるためです。最初の反復が完了する前でもループが中断されるため、k は 0 のままです。

于 2013-02-16T16:35:06.793 に答える