2016-04-30 9 views
-3
for(int i=0;i<=3;i++) 
{ 
    for(int j=1;j<=2*i-1;j++) 
     System.out.println(i); 
} 

iの価値を理解していないインクリメントforloopが、それは1にインクリメントされます。 これは私がコード上で明確でないところです。誰もこれを説明できますか?は、最初のループはまだ<code>0</code>する必要があります後

+0

"最初のループの後のiの値はまだ0になるはずです"なぜそう思うのですか? – MikeCAT

+0

2番目のループで条件を確認してください。 –

+0

はい、私はループの前にprintステートメントを置くので、値0が返ってきます。 – ABAJAVa

答えて

0

最初の反復

for(int i=0;i<=3;i++) i = 0,true, 
{ 
for(int j=1;j<=2*i-1;j++) j=1 , j<=-1 which is false . so it is skipping 
    System.out.println(i); prints nothing 
} 

2回目の反復

for(int i=0;i<=3;i++) i = 1,true, 
{ 
for(int j=1;j<=2*i-1;j++) j=1 , j<=1 which is true. so now it runs loop inside 
    System.out.println(i); so now prints 1 
} 

あなたはbeginnertoループしている場合。常に描くtrace table dry runs

+0

はい私は今それを得ましたありがとう。 – ABAJAVa

+0

はい私はプログラミングを新しく学習しています.URLトレースメソッドをお寄せいただきありがとうございます。 – ABAJAVa

+0

どこで受け入れますか?私はこのブログを初めて使っています。 – ABAJAVa

2

i0の場合、内側ループ(jの値に基づくもの)は実行されません。条件はj<=-1と評価されるので、ループは入力されず、System.out.printlnステートメントは決して実行されません。第2のループにおいてのみ、i1である場合、第2のループは実行の機会を有する。

+0

いいえ、それを得ました。ありがとう、 – ABAJAVa

1

内部ループでは、i = 0の場合、このループは最初のループでは実行されないため、for(int j = 1; j < = 2 * i-1; j ++)の条件を満たす必要があります。したがって、それは第2の反復すなわちi = 1に進む。

+0

よかったよ。ありがとう – ABAJAVa

+0

@ABAJAVaあなたがあなたの答えを持っていればupvoteしてください。 :) – hellboy

関連する問題