我正在编写一个程序,该程序创建一个表示8×8网格的字符串,使用换行符分隔行。在网格的每个位置都有一个空格或一个“#”字符。这些人物应该形成一个棋盘。
将此字符串传递给console.log应该显示如下所示:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #当您有一个生成此模式的程序时,定义一个变量size = 8并更改该程序,以便它可以用于任意大小,输出一个给定宽度和高度的网格。
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);
}我很难弄明白为什么这不管用.
发布于 2016-05-29 11:39:36
删除循环末尾的分号:
for (var x = 1; x <= size; x++) {
var line = ' ';
for (var y = 1; y <= size; y++) {使用分号,引擎将执行以下操作:
i之后将是10如果你加了一个断线,那就很明显了。
for (var i = 0; i < 10; i++);
{console.log(i);}花括号不是for的主体,而是一个新块。
发布于 2016-05-29 11:35:14
确保在;循环前面删除了for -s,因为您的for循环在括号内没有正确地执行逻辑(代码只运行一次):
像这样的事情会做你想做的事:
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);
}
https://stackoverflow.com/questions/37509386
复制相似问题