2017-06-10 5 views
0

私は素数のリストを生成するこのコードを持っています。中括弧なしの場合

<script> 
    var num = prompt("enter limit") 

    for(i = 2; i < num; i++) 
    { 
     if((i % 2 == 0 || i % 3 == 0)) 
      continue; 

     document.write(i + " is a PRIME") 
    } 
</script> 

私の質問は、以下のコードはなぜ実行されないのですか。 if文に中括弧を追加します。

<script> 
    var num = prompt("enter limit") 

    for(i =2; i < num; i++) 
    { 
     if((i % 2 == 0 || i % 3 == 0)) 
     { 
      continue; 
      document.write(i + " is a PRIME") 
     } 
    } 
</script> 
+3

ようこそ@doctorWeirdをStackoverflowします。質問をするときは、コードをインデントしてください。 – csblo

答えて

1

あなたの解釈は少し間違っています。中括弧なしで、if文が実行される唯一のコードの後に​​、それゆえ私はあなただけのif文の中continueすることを前提としていifので

if((i % 2 == 0 || i % 3 == 0)) { 
    continue; 
} 
document.write(i + " is a PRIME") 
1

を次のように正しい解釈になります。あなたのコードを修正するには、ifの条件の外にあるdocument.writeのステートメントを取る必要があります。

var num = prompt("enter limit") 

for (i = 2; i < num; i++) { 
    if ((i % 2 == 0 || i % 3 == 0)) { 
    continue; 
    } 

    document.write(i + " is a PRIME"); 
} 

あなたは

if(YOUR_CONDITION_HERE) 
    continue; //only this will be considered in the `if` statement 

のようなあなたのif文を書くしかし、あなたは

if(YOUR_CONDITION_HERE) { 
    continue; //this will be considered inside the if statement and also other code which is inside the curly braces. 
} 
2

としてそれを書く場合if文は、条件、それに接続さ陳述を行った場合それがテストする状態で。あなたの場合、その一つステートメントはcontinueです。あなたは中括弧を使用する場合

、あなたは一緒にグループ他の文を文ですifブロック文、に取り付けられた1つの文を作っています。

あなたの元のコードは、正しく*インデント、次のとおりです。

var num = prompt("enter limit") 

for (i = 2; i < num; i++) { 
    if ((i % 2 == 0 || i % 3 == 0)) 
     continue; 
    document.write(i + " is a PRIME") 
} 

ここでも、あなたが見ることができるように、唯一のcontinue文はifに取り付けられています。

var num = prompt("enter limit") 

for (i = 2; i < num; i++) { 
    if ((i % 2 == 0 || i % 3 == 0)) { 
     continue; 
    } 
    document.write(i + " is a PRIME") 
} 

* (インデントする「正しい」方法はたくさんあります:あなたはブロック文を使用したい場合は

は、continueはあなたが同じ意味を保つために、それに入れられるすべてでありますコードしかし、あなたは、コードが明確になりたい場合は、あなたがあなたの質問にはいなかったそれらのを使用する必要があります)

1

あなたのコードが実行さありません。。。それは単に出力を生成しません。のは、適切なコードを見てみましょう:

if((i % 2 == 0 || i % 3 == 0)) 
{ 
    continue; 
    document.write(i + " is a PRIME") 
} 

iは、条件付きの要件を満たしていない場合は、コードの実行は、中括弧の間のコードブロックを入力しません。そのシナリオのための簡単な説明。しかし、それはコードブロックを入力したときのために、それが遭遇する最初の文は次のとおりです。

continue; 

これは、ループは、コードブロック内の任意の更なるステートメントを考慮せずに継続します。これは、出力が生成されないので中括弧を配置する理由です。

他の人も触れたように、最初の例に示すように、コード内の中括弧を削除するだけで済みます。