首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for-loop打印

使用for-loop打印
EN

Stack Overflow用户
提问于 2019-12-07 09:38:08
回答 3查看 101关注 0票数 2

尝试从Java导入形状(Pattern 23) (源https://www.topjavatutorial.com/java/java-programs/25-java-programs-printing-number-character-patterns/并在控制台中打印它:

我只使用以下命令打印左边的形状:

代码语言:javascript
复制
for (let i = 1; i <= 8; i++) {
    let shape = '';

    for (var j = 1; j <= i; j++) {
        shape += '*';
    }
    console.log(shape);
}

任何关于我应该如何解决这个问题的想法都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2019-12-07 10:08:40

以下是一种方法,在您编写的代码的基础上构建:

代码语言:javascript
复制
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]);
}

结果:

代码语言:javascript
复制
*       ****************       *
**      *******  *******      **
***     ******    ******     ***
****    *****      *****    ****
*****   ****        ****   *****
******  ***          ***  ******
******* **            ** *******
*********              *********

这不一定是最简洁的方法。但我希望你能看到我们是如何通过一步一步地在你开始的部分解决方案上构建的。

票数 2
EN

Stack Overflow用户

发布于 2019-12-07 10:18:46

一种选择是:

代码语言:javascript
复制
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);
}

结果:

代码语言:javascript
复制
*       ******************       *
**      ********  ********      **
***     *******    *******     ***
****    ******      ******    ****
*****   *****        *****   *****
******  ****          ****  ******
******* ***            *** *******
**********              **********

请注意,结果与原始形状略有不同。此形状的中间部分有18条线,但您的形状的中间部分有17条线。

票数 2
EN

Stack Overflow用户

发布于 2019-12-07 10:44:23

最后,由*和spaces组成的纯for循环回答:

代码语言:javascript
复制
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);
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59222286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档