2017-08-04 9 views
0

私のコードは、指定されたサイズのビジュアルチェス盤をアセンブルしようとしており、それをconsole.logに出力しています。基本的には、それ:ボード内のすべての行を通してJavascript - if文とelse文の両方が実行されています

  • ループ
  • ループ行
  • の列のすべての列の場所でも偶数行にある場合、それは場所のすべてを通じて空白
  • 列の場所が奇数行であっても、黒いスペースが表示されます。

マイコード:何らかの理由で

var sz = Number(prompt("What size chessboard?")) 
 
console.log("Board of size " + sz + " selected.") 
 
var row = 0 
 
var rowType = "even" 
 
var col = 0 
 
var bd = "" 
 
var whiteSpace = "[]" 
 
var blackSpace = "()" 
 

 
for (row; row <= sz; row++) { 
 
    if (row % 2 == 0) {rowType = "even";} // For even rows, all even column places are white 
 
    else {rowType = "odd";} // and for odd rows, all even column places are black 
 
    for (col = 0; col <= sz; col++) { 
 
    if (col % 2 == 0) { 
 
     if (rowType == "even") {bd += whiteSpace;} 
 
     if (rowType == "odd") {bd += blackSpace;} 
 
     else {console.log("Something went terribly wrong.")} // This should never happen... right? 
 
    } 
 
    else { 
 
     if (rowType == "even") {bd += blackSpace;} 
 
     if (rowType == "odd") {bd += whiteSpace;} 
 
     else {console.log("Something went horribly wrong.")} // Not this one either? 
 
    } 
 
    } 
 
    bd += "\n" 
 
} 
 
console.log(bd)

しかし、私はちょうど場合のケースをキャッチするために入れ余分なコードは、どういうわけか、rowTypeは、いずれかの「さえ」はなかったですコードが正常に動作していてもボードが実際に正しく生成されていても、「何かがひどく/ひどく間違っている」というメッセージが表示されることがあります。

私の問題は、明らかにこれらの行を取り除く方法ではなく、明らかに私はelseブロックを削除することができますが、私の間違いが最初に実行される場所が不思議です。

アイデア?あなたはそれを持っていたよう

+0

あなたが行に2つの 'if'sを持って –

+0

の質問にあなたのコードを追加し、最初のものには 'else'がありません。あなたは 'else if'を意味しましたか? – Ryan

+1

また、次のように記述することもできます。https://jsfiddle.net/jjg5ahLb/5/ – Ryan

答えて

3

、あなたがやっている:

でなければなりません
if (rowType == "even") {bd += whiteSpace;} 
if (rowType == "odd") {bd += blackSpace;} 
else {console.log("Something went terribly wrong.")} // <- will execute if 
                // not 'odd' 

を:

if (rowType == "even") {bd += whiteSpace;} 
else if (rowType == "odd") {bd += blackSpace;} 
else {console.log("Something went terribly wrong.")} // <- will execute if 
                // not 'even' or 'odd' 
関連する問題