用for循环创建一个三角形

Ker*_*y G 9 java geometry loops for-loop

我似乎无法找到答案 -

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

     *  
    ***
   *****
  *******
 *********
Run Code Online (Sandbox Code Playgroud)

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

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



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

谢谢-

Mar*_*nik 20

一个有趣,简单的解决方案

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


Sim*_*ser 16

首先,您需要确保生成正确数量的*符号.我们需要生成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("");
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这将导致i以开始1和增加2在每一步,只要是小于10(即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("");
}
Run Code Online (Sandbox Code Playgroud)

在打印*符号之前,我们打印一些空格,空格的数量取决于我们所在的行.这就是k变量for循环的用途.我们可以看到,k在值迭代4,3,2,10ì1,3,5,79.这就是我们想要的,因为我们所处的三角形越高,我们需要放置的空间越多.我们越往下三角形,我们需要更少的空间,三角形的最后一行甚至根本不需要空格.