问题描述
这个问题来自上述来源,我被要求制作一个国际象棋棋盘。 提供的解决方案使用相同的方法,除了y <size和x <size。 但是为什么这种方式行不通呢?
var size = 8;
var chess = "";
for (var y = 0; y == size; y++){
for (var x = 0; x == size; x++){
if ((x + y) % 2 == 0)
chess += " ";
else
chess += "#";
}
chess += "\n";
}
console.log(chess);
-
1楼
您需要了解for
循环的工作方式。
在阅读。
第二个子句是一个条件 ,每次通过循环(包括从头开始)都会进行检查。
如果为false ,则退出循环。
当它为true时,循环继续。
在您的情况下,您要一直循环直到x
或y
达到板的大小(实际上,板的大小减去1,因为我们从0开始)。
因此,以下是正确的:
for (var y = 0; y < size; y++) {
^^^^^^^^
如果你做了你所做的,然后说
for (var y = 0; y == size; y++){
^^^^^^^^^
那么循环根本不会执行 。
它将从x
的零开始,然后检查它是否等于它的size
,而不是它的size
( 0 !== 8
),因此退出循环,甚至不执行一次。
2楼
由于x
和y
值发生变化,因此for loops
的条件应为<
。
这应该工作:
var size = 8;
var chess = "";
for (var y = 0; y < size; y++){
for (var x = 0; x < size; x++){
if ((x + y) % 2 == 0)
chess += " ";
else
chess += "#";
}
chess += "\n";
}
console.log(chess);