Javascript 仅使用 for 循环和条件语句打印正方形

Javascript print square using for loop and conditional statement only

刚开始我的大学课程,javascript有点吃力。我被要求使用任何字符显示一个正方形,但是,解决方案必须结合 for 循环和 if 语句。

这是我目前所拥有的,我感觉非常接近,但我就是无法显示第二行。我知道这可以通过两个 for 循环来完成(一个用于变量的迭代,另一个用于空格)。但这不是我被要求解决这个问题的方式。

这是我的代码:

var size = 3;
let i;


for(i = 0; i < size; i++) {
print ("*");
if (size === i){ 
println (""); 
}
}

就上下文而言,这一切都发生在教授自制的学习环境中。

好吧,for 循环只迭代了 3 次,打印了第一行。如果你想要一个正方形,你必须总共打印 9 颗星,对吧?所以我假设,这是您要采用的方法吗,您需要迭代直到 size,但直到 size * size

您可以使用嵌套 for 循环并在每个填充行之后换行。

function print(s) { document.getElementById('out').innerHTML += s; }
function println(s) { document.getElementById('out').innerHTML += s + '\n'; }

var size = 5,
    i, j;

for (i = 0; i < size; i++) {
    for (j = 0; j < size; j++) {
        print("*");
    }
    println("");
}
<pre id="out"></pre>

单循环检查 i 是否不等于零,如果余数为零,则添加换行符。

使用:

  • === identity/strict equality 运算符检查类型和值,例如,如果两者都是数字并且值相同,

  • !== non-identity/strict inequality 运算符和上面一样,但是它检查它的反义词,

  • % remainder运算符,其中returns一个数的余数除法returns一个整数。

  • && logical AND operator, which check both sides and returns the last value if both a truthy (like any array, object, number not zero, a not empty string, true), or the first, if it is falsy(如 undefinednull0''(空字符串)、false , truthy 的反义词).

function print(s) { document.getElementById('out').innerHTML += s; }
function println(s) { document.getElementById('out').innerHTML += s + '\n'; }

var size = 5,
    i;

for (i = 0; i < size * size; i++) {
    if (i !== 0 && i % size === 0) {
        println("");
    }
    print("*");
}
<pre id="out"></pre>

你想做一个 * 的正方形吗?

让我们将一个任务分成 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("*");

全方更简单:

var size = 5;
var i = 0;

for (var i = 0; i < size; i++){ // iterates rows
  for (var j = 0; j < size; j++) // iterates * in row
      console.log("*");
  console.log("\n") // moves to new row
}

为了打印一行,您将相同的符号打印 X 次。好吧,要打印 X 行,我们可以再使用 1 次(只是这次我们迭代不同的变量(j 是 * 在一行中,i 是行数)。

一行完成后,我们用\n转到下一行。

至于

it must contain if statement

把这个放在最后:

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.");

我正在使用 console.log 到 'print' 方块:

    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);
    }

请注意,在下面的示例中,长度为 11 的数组只需要 10 "a"s,因为 Array.join 将参数放在数组元素之间:

Array(11).join('a'); // create string with 10 as "aaaaaaaaaa"