2016-12-21 3 views
1

私は本当に理解しにくいですif ((x + y) % 2 == 0) ...私はそれの背後にある論理を理解できません。誰かが私にこの剰余を説明できますか?

var drawTable = ""; 
var size = 8; 

for (x = 1; x <= size; x++) { 
    for (y = 1; y <= size; y++) { 
     if ((x + y) % 2 == 0) { 
      drawTable += " "; 
     } else { 
      drawTable += "#"; 
     } 
    } 
    drawTable += "\n" 
} 

console.log(drawTable); 

おかげで、

Kaueパチェコ

+0

'(x + y)%2 === 0' iff。 'x + y'は偶数です。 – Paulpro

+0

論理は、もしx + yが偶数であれば空白を加えれば、奇数ならば#...%2は0か1のどちらでもかまいません...もし1ならば数は奇数です。奇数の場合は1の残数) –

+0

[MDN Remainder](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder) – epascarello

答えて

1

if ((x + y) % 2 == 0)if (x + y) is an even numberと同じです。

1

((x + y) % 2 == 0)は、x+yが偶数の場合にのみtrueです。それ以外の場合はfalseです。 trueの場合は空白が追加され、それ以外の場合は#記号が追加されます。

1

xとyの合計が偶数である場合に表示されます。 x = 1およびy = 3の場合、x + yは4になり、4が分割されます。数字が4のように0の余りがある場合、それは偶数です。そうでなければ、それは奇数です。

あなたの残余がゼロの場合、コードは((x + y)%2 == 0)if条件内のコンテンツのみを実行します。これが助けてくれるといいのに^ _^

0

他のすべての回答には、x+yが偶数の場合は空白が表示され、奇数の場合は「#」が表示されます。そのポイントは、チェッカーボードのパターンを作成するように見えます。あなたはx = 1とy = 1で始めるので、最初の行はスペースで始まります(x + yが偶数であるため)。その後に '#'が続き、スペースが続きます.yが9になるまでその後、forループが終了し、新しい行が開始されます。この新しい行では、xは2で始まり、yは1で始まるので、 '#'が印刷されます(x + yは奇数であるため)。新しい行が開始され、xが9になるまで続きます。その時点でチェッカーボードが印刷されます。

0

if((x + y)%2 == 0)この詳細については、

モジュロ '%'は、除算の残りの部分を得るために使用されます。

あなたは、たとえばあるとします。このシナリオで

5 % 2 = ? 

、それは今の答えはそのremainderないquotientだろう2で5を分割します。

ので、答えは次のようになります。

5 % 2 = 1 

あなたが2で5分割するので、それはevenまたはodd数であり、残りはそれが比較することにより、偶数か奇数であるかを区別するかどうか、あなたが知っているだろうそれは0に。明らかに、に等しいものはすべて偶数です。

関連する問題