尝试从Java导入形状(Pattern 23) (源https://www.topjavatutorial.com/java/java-programs/25-java-programs-printing-number-character-patterns/并在控制台中打印它:
我只使用以下命令打印左边的形状:
for (let i = 1; i <= 8; i++) {
let shape = '';
for (var j = 1; j <= i; j++) {
shape += '*';
}
console.log(shape);
}任何关于我应该如何解决这个问题的想法都将不胜感激。
发布于 2019-12-07 10:08:40
以下是一种方法,在您编写的代码的基础上构建:
function reverseString(str) {
return str.split( '' ).reverse( ).join( '' );
}
// Build first 8 characters of each line.
lines = []
for (let i = 1; i <= 8; i++) {
lines.push('')
for (var j = 1; j <= i; j++) {
lines[lines.length-1] += "*";
}
for (; j <= 8; j++) {
lines[lines.length-1] += " ";
}
}
// Append the vertical mirror to get the first 16 characters of each line.
lines_2 = []
for (let i = 1; i <= 8; i++) {
lines_2.push(lines[i - 1] + lines[8-i]);
}
// Append the horizontal mirror to get the entire 32 characters of each line.
lines_3 = []
for (let i = 1; i <= 8; i++) {
lines_3.push(lines_2[i-1] + reverseString(lines_2[i-1]));
}
// Output
for(let i = 0; i < 8; i++) {
console.log(lines_3[i]);
}结果:
* **************** *
** ******* ******* **
*** ****** ****** ***
**** ***** ***** ****
***** **** **** *****
****** *** *** ******
******* ** ** *******
********* *********这不一定是最简洁的方法。但我希望你能看到我们是如何通过一步一步地在你开始的部分解决方案上构建的。
发布于 2019-12-07 10:18:46
一种选择是:
for (var i = 0; i < 8; i++) {
let stars = "*".repeat(9 - i).padEnd(9, ' ');
let leftSide = "*".repeat(i + 1).padEnd(8, ' ') + stars;
let rightSide = leftSide.split("").reverse().join("");
console.log(leftSide + rightSide);
}结果:
* ****************** *
** ******** ******** **
*** ******* ******* ***
**** ****** ****** ****
***** ***** ***** *****
****** **** **** ******
******* *** *** *******
********** **********请注意,结果与原始形状略有不同。此形状的中间部分有18条线,但您的形状的中间部分有17条线。
发布于 2019-12-07 10:44:23
最后,由*和spaces组成的纯for循环回答:
for (let i = 1; i <= 8; i++) {
let shape = '';
for (var j = 1; j <= i; j++) {
shape += '*';
}
for (var j = 8; j > i; j--) {
shape += ' ';
}
for (var j = 9; j >= i; j--) {
shape += '*';
}
for (var j = 2; j <= i; j++) {
shape += ' ';
}
for (var j = 2; j <= i; j++) {
shape += ' ';
}
for (var j = 9; j >= i; j--) {
shape += '*';
}
for (var j = 8; j > i; j--) {
shape += ' ';
}
for (var j = 1; j <= i; j++) {
shape += '*';
}
console.log(shape);
}
https://stackoverflow.com/questions/59222286
复制相似问题