2017-10-08 147 views
0

编写JavaScript以提示用户输入奇数。首先,检查用户是否输入了有效的奇数。然后,您需要在控制台上打印一个与用户输入的号码相同数量的*字符的叉号。在for循环中在字符串的前面添加空格

到目前为止,我有我的代码,这样

我已经编辑我的代码,包括有道

let num = prompt("Enter an odd number"); 
let star = "*"; 
let vertical = ""; 
let horizontal = star.repeat(num); 

while (num%2 == 0) { 
    console.log("User did not enter an odd number"); 
    num = prompt("Enter an odd number"); 
} 
console.log("User's number is " +num); 
let pos = +(Math.ceil(num/2)); 
// I need to divide the input number by 2 and round up 
for (var h = 0; h < pos; h++){ 
    vertical += (" ") 

} 

for (var v = 0; v < pos; v++){ 
    vertical += vertical + "\n *" 
} 
vertical += "*" 
console.log (vertical) 

我可以垂直到\ n次适量但我怎么去确保我不会重复*?

+1

为什么不在一开始'只是说让垂直=“”'然后循环写'垂直+ =后“*”'? –

+0

是的,你是对的。这是一个非常简单的解决方案,谢谢你提出。 现在有什么机会可以让你知道我可以如何在数量或位置上垂直重复数据?我尝试过使用\ n来重复新行,但它不起作用 –

回答

1

你在正确的轨道上。有三个步骤,你需要在这里做。您需要创建一个这样的交叉(假设为13个):

* 
    * 
    * 
******* 
    * 
    * 
    * 

您需要创建Math.floor(13/4)(出来3)单星行,用后Math.floor(13/4)空间每颗恒星。然后你需要一排从0开始的Math.ceil(13/2)恒星。最后,你需要与该行之前相同数量的恒星,所以你可以再次做同样的事情。

使用你的代码,我会做这样的事情:

let num = prompt("Enter an odd number"); 

while (num%2 == 0) { 
    console.log("User did not enter an odd number"); 
    num = prompt("Enter an odd number"); 
} 
console.log("User's number is " +num); 

let star = " "; 
let pos = Math.floor(num/4); 
let vertical = star.repeat(pos) + "*"; 

for (var i = 0; i < pos; i++) { 
    console.log(vertical); 
} 

console.log("*".repeat(Math.ceil(num/2))); 

for (var i = 0; i < pos; i++) { 
    console.log(vertical); 
} 
+0

这绝对与我所需要的更接近。尽管如此,我将数学部分改为math.floor(num/2),只是.repeat(num),因为我希望用户输入的全部数量为*; 有没有一个原因控制台没有显示与*完整的新行?它只显示重复次数(6)而不是显示所有* –

+0

这就是某些控制台的工作原理。您可能可以更改浏览器的设置。它是为了保存空间。另一种可能性是将整个十字转换为一个大字符串,其中有多个新行字符 –

1

首先要指定

let vertical = "*"; 

改变它

let vertical = ""; 

试试这个

let num = prompt("Enter an odd number"); 
 
let star = "*"; 
 
let vertical = ""; 
 
let horizontal = star.repeat(num) 
 

 
while (num%2 == 0) { 
 
console.log("User did not enter an odd number"); 
 
num = prompt("Enter an odd number"); 
 
} 
 
console.log("User's number is " +num); 
 
let pos = +(Math.ceil(num/2)); 
 
// I need to divide the input number by 2 and round up 
 
for (var h = 0; h < pos; h++){ 
 
vertical += (" ") 
 

 
} 
 
console.log(vertical)