Javascript打印方块仅使用for循环和条件语句
刚开始我的大学课程,在javascript方面有点困难。我被要求使用任何字符显示一个正方形,但是,解决方案必须结合for循环和if语句 这是我到目前为止所拥有的,我感觉非常接近,但我只是无法显示第二行。我知道这可以通过两个for循环来实现(一个用于变量的迭代,另一个用于空间)。但这不是我被要求解决这个问题的方式 这是我的密码:Javascript打印方块仅使用for循环和条件语句,javascript,for-loop,conditional,Javascript,For Loop,Conditional,刚开始我的大学课程,在javascript方面有点困难。我被要求使用任何字符显示一个正方形,但是,解决方案必须结合for循环和if语句 这是我到目前为止所拥有的,我感觉非常接近,但我只是无法显示第二行。我知道这可以通过两个for循环来实现(一个用于变量的迭代,另一个用于空间)。但这不是我被要求解决这个问题的方式 这是我的密码: var size = 3; let i; for(i = 0; i < size; i++) { print ("*"); if (size === i){
var size = 3;
let i;
for(i = 0; i < size; i++) {
print ("*");
if (size === i){
println ("");
}
}
var size=3;
让我;
对于(i=0;i
就上下文而言,这一切都发生在教授自制的学习环境中 for循环只迭代3次,打印第一行。如果你想要一个正方形,你必须打印9颗星,对吗?所以我假设,如果这是您要使用的方法,您需要迭代,直到
size
,但直到size*size
,您可以使用嵌套的进行循环,并在每个填充行之后换行
函数打印{document.getElementById('out').innerHTML+=s;}
函数println(s){document.getElementById('out').innerHTML+=s+'\n';}
变量大小=5,
i、 j;
对于(i=0;i
你想把*做成一个正方形,其中大小是*边上的*数
让我们将任务分为3部分:
- 您可以像这样打印顶面*****
- 打印中间(左侧和右侧)的位置,如**
- 打印底部的位置(与顶部相同)
现在让我们来编写代码,我让代码尽可能简单,这可以用更少的行完成,但我认为这对初学者来说更容易理解:
var size = 5;
var i = 0;
// top
for (i = 0; i < size; i++)
console.log("*");
//middle
for (var j = 0; j < size - 2; j++){
console.log("\n"); // go to next row
// middle (2 on sides with size-2 in between)
console.log("*");
for (i = 0; i < size-2; i++)
console.log(" ");
console.log("*\n"); // goes to new row as well
}
// same as top
for (i = 0; i < size; i++)
console.log("*");
我正在使用console.log“打印”正方形:
var dimension = 10;
var edge = '*';
var inside = ' ';
var printLine;
for (var i = 1; i <= dimension; i++) {
if (i === 1 || i === dimension) {
printline = Array(dimension + 1).join(edge);
} else {
printline = edge + Array(dimension - 1).join(inside) + edge;
}
console.log(printline);
}
这让我有点困惑,而且,例如,输出需要看起来像一个填充的正方形,而不是一个空的。不过谢谢。对不起,现在已经有了完整的输出。我以前就是这样做的,但是,他现在想要一个条件语句。这是我的第一个建议,但他说我不是在玩游戏,哈哈。一些条件运算对我来说已经失去了意义,有没有机会解释模函数在做什么?多谢了,我真的很喜欢这个方法,我应该在输入任何东西之前多考虑一下这个问题。我甚至没有考虑过检查我的剩余部分来创建一个新行。我的想法更为线性。循环需要实际捕获用户输入的构成平方的*数。如果我在size*size上迭代,我会不会得到一个9*的字符串谢谢你的帮助!这是非常有用的,但是正方形不需要是空的,它需要是静态的X*X正方形,每个正方形中有一个字符。只是提醒一下,它必须至少包含一个if语句。告诉给你任务的人,将解决方案调整为包含码字是很糟糕的。这不符合编程的精神。但是,很好,您可以在最后添加if;)如果你想让它显示出来,你可以把真相告诉你的价值观:哈哈,我相信他会得到回报的!我休息了一会儿,然后又回到这里,至少第一行的显示是正确的。我曾考虑过在其中加入一个else,但我就是想不出如果没有一行又一行嵌套的ifs,我该如何有效地扩展它。使用Array.join()的想法很好。
if (youCanHandleTheTruth) console.log("It's a terrible practice to tell students their solution MUST CONTAIN CODEWORDS. If you need them to showcase something, write appropriate task that will require them to do so.");
var dimension = 10;
var edge = '*';
var inside = ' ';
var printLine;
for (var i = 1; i <= dimension; i++) {
if (i === 1 || i === dimension) {
printline = Array(dimension + 1).join(edge);
} else {
printline = edge + Array(dimension - 1).join(inside) + edge;
}
console.log(printline);
}
Array(11).join('a'); // create string with 10 as "aaaaaaaaaa"