【问题标题】:Javascript chess boardJavascript 棋盘
【发布时间】:2016-03-14 11:12:34
【问题描述】:

我一直在尝试使用以下代码解决雄辩的 javascript 棋盘练习。这些行以正确的顺序打印,但是由于某种我似乎找不到的原因,循环是无限的。任何帮助指出问题所在将不胜感激,谢谢。

我的代码如下所示:

 var line= ['# # # #', ' # # # #']

 for (var i = 0; i < 7; i ++) {
    if ( i = (i-1)%2 == 0 )
       console.log(line[0]);
       else console.log(line[1]);
 };

【问题讨论】:

  • 因为i = (i-1)%2 == 0 覆盖了i 的值

标签: javascript chessboard.js


【解决方案1】:

i 将始终小于循环的限制,因为您在 if 条件内进行了分配

for (var i = 0; i < 7; i ++) {
     // i & 1 is a mask that matches the rightmost bit, which, if set
     // indicates that a number is odd
     console.log(line[i & 1]);
}

【讨论】:

    【解决方案2】:

    感谢您的回答,我没有意识到if语句中条件设置为i的问题(新手错误)。 我将代码修改为以下代码,它工作得非常好,而且它似乎比其他解决方案中提供的代码更短:

    var line= ['# # # #', ' # # # #']
    
       for (var i = 0; i < 7; i ++) {
    
       if ( i%2 == 0 )
          console.log(line[0]);
    
         else console.log(line[1]);
        };
    

    感谢您的宝贵时间!

    【讨论】:

      【解决方案3】:

      您可以编程计算字符,而不是拥有一个值数组。

      var html = "";
      for(var i = 0; i<7; i++){
        for(var j=0; j<7; j++){
          html += (i+j) % 2 == 0?"# ":"&nbsp;&nbsp;";
        }
        html+="<br/>"
      }
      document.write(html)

      【讨论】:

        猜你喜欢
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        • 1970-01-01
        • 2014-10-21
        相关资源
        最近更新 更多