2016-07-07 7 views
-2

誰かがなぜループの中でj < iを説明してくれますか? iとしてJava For Loop、なぜJ <I?

for(int i=1; i < 100; i++){ 
    boolean isPrime = true; 

    //check to see if the number is prime 
    for(int j=2; j < i ; j++){ 
     if(i % j == 0){ 
      isPrime = false; 
     } 
    } 

    // print the number 
    if(isPrime) 
     System.out.print(i + " "); 
} 

第二のループに入るi==1ではないでしょうか?

+2

はい、初めてですが、それ以降はありません。 – JJJ

+0

あなたの質問は少し不明です:technicaly、これはうまくいきます.i == 1の場合、j Erik

+1

私はユハナに同意しません。 2番目のループは決して実行されませんi == 1 –

答えて

0

私は2番目のループに入りますが、i == 1ではありませんか?

これに対する答えはいいえです。

forループの条件は、基本的にブール値です。あなたのforループネストされたあなたは

for(int j=2; j < i ; j++)

を持っているこれは、このforループを実行するためには、jは< iをしなければならないことを意味します。

この行にブレークポイントを置き、デバッガでステップ実行すると、これははるかに明らかになります。

だから、i==1とすると、j<ifalseなので、2番目のfor-loopは実行できません。あなたはi=1を持っています

だから、あなたのコードの非常に先頭から、あなたは最初から実行

for(int i=1; i < 100; i++){ 
    boolean isPrime = true; 

    //check to see if the number is prime 
    for(int j=2; j < i ; j++){ 
     if(i % j == 0){ 
      isPrime = false; 
     } 
    } 

    // print the number 
    if(isPrime) 
     System.out.print(i + " "); 
} 

持っています。 isPrimetrueに等しく設定され、2番目のfor-loopのパラメータが満たされているかどうかがチェックされます。

for(int j=2; j < i ; j++) 
j < i

falseので、forループを実行しないであろう。あなたはforループ秒j<i2 < 2の値を保持することは、ループが再びスキップされ、falseであることを確認し、見ることになり、i=2があります声明if(isPrime)

次の繰り返した場合のコードは、それをスキップし、あなたに行きます。

3回目の反復はi=3です。内側のループは2 < 3の値を保持しているj<iが今度はTRUEであるかどうかチェックされるので、ループが最後に実行されます。

これはうまくいけばうまくいきます。前にも言及したように、まだあなたには不明な点がある場合は、デバッガを使用して実行してください。

0

j > i < =>i % j == iであり、決して== 0であるためです。あなたはそれぞれの数について1 100までの間、素数を探している

2

は、私(それが1から100に行く)、あなたはそれを分割少ない数(J)があるかどうかを確認したいです。 小さい数字はjを意味します。< i。

ループの最初の反復では、i = 1なので、内側のループは実行されません.1が素数であるため、okです。小さい数値で分割されているかどうかを確認する必要はありません。