2017-10-13 70 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