2017-08-04 150 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沒有任何「甚至」或「奇怪」似乎總是被執行,即使代碼工作正常,並且板實際上正確地產生,在console.log中放置「某事變得非常糟糕/可怕地錯誤」。

我的問題不是如何擺脫這些線條,顯然我可以刪除else塊,但我很好奇我的錯誤在哪裏使它首先運行。

任何想法?

+0

你的代碼添加到這個問題 –

+0

你必須在連續兩個'if's,和第一個沒有'else'。你的意思是「如果」呢? – 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'