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(如 undefined
、null
、0
、''
(空字符串)、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"
刚开始我的大学课程,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(如undefined
、null
、0
、''
(空字符串)、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"