首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成棋盘8x8网格模式的JavaScript算法

生成棋盘8x8网格模式的JavaScript算法
EN

Stack Overflow用户
提问于 2016-05-29 11:31:04
回答 2查看 4.6K关注 0票数 0

我正在编写一个程序,该程序创建一个表示8×8网格的字符串,使用换行符分隔行。在网格的每个位置都有一个空格或一个“#”字符。这些人物应该形成一个棋盘。

将此字符串传递给console.log应该显示如下所示:

代码语言:javascript
复制
 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #

当您有一个生成此模式的程序时,定义一个变量size = 8并更改该程序,以便它可以用于任意大小,输出一个给定宽度和高度的网格。

代码语言:javascript
复制
var hash = "#";
var space = ' ';
var size = 8;

for (var x = 1; x <= size; x++); {
  var line = ' ';

  for (var y = 1; y <= size; y++); {
    if (x % 2) {
      if (y % 2) {
        line = line + space;
      } else {
        line = line + hash;
      }
    } else {
      if (y % 2) {
        line = line + hash;
      } else {
        line = line + space;
      }
    }

  }

  console.log(line);
}

我很难弄明白为什么这不管用.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-29 11:39:36

删除循环末尾的分号:

代码语言:javascript
复制
for (var x = 1; x <= size; x++) {
    var line = ' ';

    for (var y = 1; y <= size; y++) {

使用分号,引擎将执行以下操作:

  1. 在括号内的“for”之后运行这些内容-- i之后将是10
  2. 花括号中的内容将在之后执行一次

如果你加了一个断线,那就很明显了。

代码语言:javascript
复制
for (var i = 0; i < 10; i++); 
{console.log(i);}

花括号不是for的主体,而是一个新块。

票数 1
EN

Stack Overflow用户

发布于 2016-05-29 11:35:14

确保在;循环前面删除了for -s,因为您的for循环在括号内没有正确地执行逻辑(代码只运行一次):

像这样的事情会做你想做的事:

代码语言:javascript
复制
var size = 8;    
for (var y = 0; y < size; y++) {
    var line = ' ';

    for (var x = 0; x < size; x++) {
        line += (y + x + 1) % 2 ? ' ': '#';
    }

    console.log(line);
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37509386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档