2017-10-13 32 views
1

刚开始我的单程课程,用javascript挣扎了一下。我被要求使用任何字符显示一个正方形,但是,解决方案必须结合循环和if语句。JavaScript打印广场只用于循环和条件声明

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

这里是我的代码:

var size = 3; 
let i; 


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

对于背景下,这是所有发生的诠释,他的教授自制的学习环境。

回答

0

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

+0

环路需要实际捕获*的从而弥补了正方形的数量的用户输入。如果我想在size * size上迭代,我会不会最终得到一串9 *的字符串呢? - 谢谢你的帮助! –

2

您可以使用嵌套的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运算符,它返回除法返回一个整数的数字的其余部分。

  • && logical AND运算符,它检查两侧返回最后一个值,如果两者truthy(像任何阵列,对象,数量不为零时,一个不为空字符串,true),或所述第一,如果是falsy(像undefined,null0''(空串),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>

+0

这让我感到困惑,同时,例如,输出需要看起来像一个填充正方形,而不是一个空的。 Thankyou虽然。 –

+0

对不起,现在填充输出。 –

+0

这就是我以前做过的事情,但是,他现在想要一个条件声明。这是我的第一个建议,但他说我没有玩游戏公平哈哈。 –

0

你想使一个*广场,在那里的大小是*在其侧面有多少?

让我们把一项工作分为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

至于

它必须包含如果PUT语句

本底:。

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

这是非常有用的,但方形不需要是空的,它需要是静态的X * X方格,每个方格都有一个字符。 –

+0

哦,这更简单;)将尽快编辑! – DanteTheSmith

+0

只要提醒一下,它必须至少包含一条if语句。 –

0

我使用的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); 
    } 

注意,在下面的例子中,长度为11的数组可以让你只有10个“一” S,因为Array.join放阵列元件之间的论点:

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

用Array.join()来思考。 – DanteTheSmith