2016-07-27 152 views
1

我正在嘗試解決Javascript拼圖。我需要編寫一個函數,該函數使用while循環將字符添加到字符串的開頭,然後在下一個循環中將字符添加到字符串的末尾,然後將字符添加到循環的開始位置。該函數需要兩個參數一個字符串和一些字符來添加。 到目前爲止,我有交替向字符串的開頭和結尾添加字符

function padIt(str,n){ 
    //coding here 
    var newStr = ""; 
    var padding = "*"; 
    var i = 0; 

    while(i<=n){ 
     if (i%2===0){ 
      newStr = newStr+padding; 
     } else{ 
      newStr = padding+str; 
     } 
     i++; 
    } 
    return newStr; 
    } 

我傳遞的前兩個測試案例,但它不會通過循環第三次正常工作。對於n = 3,期望「* * a *」但只能得到「* a」。它必須是一個while循環,所以我不知道我是不是正確地設置了循環,或者如果我搞亂了變量。任何幫助非常感謝,因爲我完全失去了。

+0

您需要註釋/刪除您'// +中newstr填充=;'線。 –

回答

0

您可以通過編寫像下面的代碼做到這一點,

function padIt(str,n, pad = "*"){ 
    var left = Math.ceil(n/2), right = n - left; 
    return pad.repeat(left) + str + pad.repeat(right); 
} 

而這個功能將打印,

console.log("a", 1); // "*a" 
console.log("a", 2); // "*a*" 
console.log("a", 10); // "*****a*****" 

事情需要執行這段代碼後進行讀取,

+1

不是一個while循環,但我認爲這絕對是我應該如何使用變量。 –

0

您需要評論您的newStr+=padding;行。

這裏是細化碼,

function padIt(str,n){ 
    //coding here 
    var newStr = ""; 
    var padding = "*"; 
    var i = 0; 

    while(i<=n){ 
    i++; 
    newStr=padding+str; 
    //newStr+=padding; 
} 

    return newStr; 

} 

HTH

相關問題