Javascript 编写一个表示8×的程序;8格?
这是一本教科书: 编写一个程序,创建一个表示8×8网格的字符串,使用换行符分隔行。网格的每个位置都有一个空格或一个“#”字符。这些字符应构成一个棋盘 棋盘看起来像这样:Javascript 编写一个表示8×的程序;8格?,javascript,loops,for-loop,Javascript,Loops,For Loop,这是一本教科书: 编写一个程序,创建一个表示8×8网格的字符串,使用换行符分隔行。网格的每个位置都有一个空格或一个“#”字符。这些字符应构成一个棋盘 棋盘看起来像这样: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 这是我的代码: const lineOne = ' # # # # ' const lineTwo = '# # # #' const chessboard = function()
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
这是我的代码:
const lineOne = ' # # # # '
const lineTwo = '# # # #'
const chessboard = function() {
console.log(lineOne)
console.log(lineTwo)
console.log(lineOne)
console.log(lineTwo)
console.log(lineOne)
console.log(lineTwo)
console.log(lineOne)
console.log(lineTwo)
}
console.log(chessboard())
虽然这会输出棋盘,但我可以看出这是非常低效的。写这篇文章的更好方法是什么
教科书上也写着,一旦我写完程序
输出我应该设置绑定的棋盘:size=8,并更改程序,使其适用于任何大小,输出给定宽度和高度的网格
如何做到这一点?有人告诉我,我们需要一个循环中的一个循环,但我想不出来
请记住,我是一个正在学习的新手,所以你解释得越多越好
感谢您的帮助。循环使代码比实际长度更短 与打印
######
不同,您可以在循环中写入8次,让程序只需写入1次即可打印8次
循环中的if
条件只会使打印交替进行,使其看起来像一个棋盘
循环从1开始,到8结束。它由变量i
表示。在这种情况下,我们可以区分奇数和偶数
如果i
变量是偶数,则if
条件将打印lineTwo
,如果i
变量是奇数,则将打印lineOne
循环使其更具动态性,因为您只需更改变量size
表示的循环末尾,该变量当前在8
上,表示您想要的任何数字
const lineOne='#####
常数lineTwo='#######'
常数大小=8
常量棋盘=函数(){
对于(假设i=1;i在棋盘中,调用每个单元格a[i,j]
i
是行索引,j
是列索引
i+j
为偶数的所有单元格均为黑色
- 所有
i+j
为奇数的单元格均为白色
var numberColumns=8;
对于(变量i=0;i
正如你的书中所说,我们可以通过几个for
循环来实现这一点。我们将有一个行循环(y坐标)和列循环(x坐标)
for循环通常用于执行某个特定次数的操作(从技术上讲,直到满足某个条件为止)。下面是一个示例:
for (let y = 0; y < 8; y++) {
// Do something
}
外部循环用于行,内部循环用于列。现在,您将在内部循环中看到这一行:
line += ((x+y)%2) ? ' ' : '#';
从行开始+=
这意味着我们将获取行
变量并将一些数据连接到它。也就是说,由于它是一个字符串,+=
操作符获取现有的文本数据,并将更多文本放在它的末尾,将其重新分配回行
变量
现在,(x+y)%2
首先,模运算符%
0%2
是0
,1%2
是1
,2%2
是0
,3%2
是1
,依此类推。基本上,除法,余数是什么。在这种情况下,我们添加行x
,列yde>这样我们将为每一行交替奇偶值。其结果将是1
或0
((x+y)%2)?“”:“#”
这称为三元。something?/truthy':“falsy”
表示如果something
为真(或truthy,如1
),则返回'truthy'
。如果不是,则返回'falsy'
。在我们的例子中,如果行加列为奇数,则返回一个空空格(连接到行)。否则,如果它是偶数,则返回一个#
(它也连接到该行)
在每个内部循环之后,输出行,然后重新开始。我认为对于初学者来说,这是最简单的方法
以下是执行此操作的步骤:
用棋盘的大小迭代2个循环
。外循环表示行
,内循环表示列
。
//这里循环迭代(从0到表示从0到7
内环根据模块决定外环
索引为偶数
或奇数
。它将决定行的起始列为空格
或块(#)
在这个if和else
内部,只需找出内部循环索引是偶数
或奇数
,并在此基础上追加列(空格
或块(#)
)
var size=8;
变量块='#';
var空间=“”;
功能棋盘(棋盘大小){
对于(变量i=0;i
使用2个循环
检测奇偶行
写入缓冲区
函数createGrid(大小){
变量s=“”
对于(变量行=0;行<大小;行++){
var oddRow=行%2==0
如果(oddRow){
s+=''
}
对于(变量col=0;colline += ((x+y)%2) ? ' ' : '#';