JavaScript用哈希字符#打印正方形输出不符合预期如何解决
问题出在哪
你原来的代码有两个明显的问题:
- 内层循环里每打一个#就直接调
console.log("#"),而console.log输出完内容会自动加换行,所以每个#都单独占一行,根本凑不到同一行上。 - 内层循环跑完之后你又调了
console.log(" "),不仅多打了个空格,还额外换了一次行,所以行与行之间会多出空行。 - 循环变量
i和j没加let声明,直接就变成全局变量了,虽然这次跑不影响,但属于很容易埋坑的写法。
正确的写法
要让同一行的#凑在一起,得先把一行的#都拼到一个字符串里,等整行拼完了再一次性输出就行:
function square(num){ for(let i = 0; i < num; i++){ let line = ""; for(let j = 0; j < num; j++){ line += "#"; } console.log(line); } } square(2);
如果想写得更短,JS原生的repeat方法可以直接生成指定长度的重复字符串,连内层循环都不用写:
function square(num){ for(let i = 0; i < num; i++){ console.log("#".repeat(num)); } } square(2);
两种写法跑出来的效果都一样,调用square(2)就会输出两行连续的##,完全是你要的正方形效果。
内容的提问来源于stack exchange,提问作者Christopher Maphakane
相关产品推荐
相关产品推荐

