使用 for 循环创建三角形

新手上路,请多包涵

我似乎无法找到这个问题的答案——

我需要使用 for 循环绘制一个简单的三角形。

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

我可以制作一个半三角形,但我不知道如何添加到我当前的循环中以形成一个完整的三角形。

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

 for (int i = 0; i < 6; i++) {
    for (int j = 0; j < i; j++) {
        System.out.print("*");
    }
    System.out.println("");
}

原文由 Kerry G 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 367
2 个回答

首先,您需要确保生成正确数量的 * 符号。我们需要生成 1、3、5 等而不是 1、2、3。这可以通过修改计数器变量来解决:

 for (int i=1; i<10; i += 2)
{
    for (int j=0; j<i; j++)
    {
        System.out.print("*");
    }
    System.out.println("");
}

As you can see, this causes i to start at 1 and increase by 2 at each step as long is it is smaller than 10 (ie, 1 , 3 , 5 , 7 , 9 ).这给了我们正确数量的 * 符号。然后我们需要修复每行的缩进级别。这可以按如下方式完成:

 for (int i=1; i<10; i += 2)
{
    for (int k=0; k < (4 - i / 2); k++)
    {
        System.out.print(" ");
    }
    for (int j=0; j<i; j++)
    {
        System.out.print("*");
    }
    System.out.println("");
}

在打印 * 符号之前,我们打印了一些空格,空格的数量取决于我们所在的行。这就是带有 k 变量的 for 循环的用途。 We can see that k over the values 4 , 3 , 2 , 1 and 0 when ì is 1 , 3 , 5 , 7 and 9 。这就是我们想要的,因为我们在三角形中越高,我们需要放置的空间就越多。我们越往下走三角形,我们需要的空间就越少,三角形的最后一行甚至根本不需要空间。

原文由 Simeon Visser 发布,翻译遵循 CC BY-SA 3.0 许可协议

一个有趣、简单的解决方案:

 for (int i = 0; i < 5; i++)
  System.out.println("    *********".substring(i, 5 + 2*i));

原文由 Marko Topolnik 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏