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

时间:2017-10-13 10:28:33

标签: javascript for-loop conditional

刚开始我的单身课程,用javascript挣扎了一下。我被要求使用任何字符显示正方形,但是,解决方案必须结合for循环和if语句。

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

这是我的代码:

var size = 3;
let i;


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

对于背景,这一切都发生在教授自制的学习环境中。

4 个答案:

答案 0 :(得分:2)

您可以使用嵌套的for循环,并在每条填充行后执行换行符。

&#13;
&#13;
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("");
}
&#13;
<pre id="out"></pre>
&#13;
&#13;
&#13;

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

使用:

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

  • !== non-identity/strict inequality运算符就像上面一样,但它会检查它的对话,

  • % remainder运算符,它返回一个除数返回整数的数字的其余部分。

  • && logical AND运算符,检查双方并返回最后一个值truthy(如任何数组,对象,数字不为零,非空字符串,{{1} }),或第一个,如果它是falsy(例如trueundefinednull0(空字符串),'' ,真正的白痴)。

&#13;
&#13;
false
&#13;
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("*");
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你想要制作一个*的正方形,其大小是其两侧的*的数量?

让我们将一项任务分成三部分:

  • 在哪里打印顶部像*****
  • 您打印中间(左侧和右侧),如* *
  • 您打印底部(与顶部相同)

现在让我们编写代码,我保持代码尽可能简单,这可以用更少的行完成,但我认为这对初学者来说更容易理解:

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是*连续,我是一些行)。

在排了一行后,我们用\ n。

进入下一行

至于

  

它必须包含if语句

把它放在最后:

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

答案 3 :(得分:0)

我使用console.log来打印&#39;广场:

    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&#34; a&#34; s,因为Array.join将参数放在数组元素之间:

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