int xinghaoheight;
int width;
int denghaoHeight=50;
xinghaoheight=20;
width=9;
for(int i=1;i<xinghaoheight;i++)
{
for (int j=0;j<width-2*i-3;j++)
System.out.print(" ");
if (4*i-3<=width)
for(int j=0;j<4*i-3;j++)
System.out.print("*");
else
for(int j=0;j<width;j++)
System.out.print("*");
System.out.println();
}
for (int i=0;i< denghaoHeight;i++)
{
for(int j=0;j<width;j++)
System.out.print("=");
System.out.println();
}

解决方案 »

  1.   

             int xinghaoheight;
    int width;
    int denghaoHeight=50;
    xinghaoheight=20;
    width=19;
    for(int i=1;i<xinghaoheight;i++)
    {
    for (int j=0;j<(int)(width/2)-2*i+2;j++)
    System.out.print(" ");
    if (4*i-3<width)
    for(int j=0;j<4*i-3;j++)
    System.out.print("*");
    else
    for(int j=0;j<width;j++)
    System.out.print("*");
    System.out.println();
    }
    for (int i=0;i< denghaoHeight;i++)
    {
    for(int j=0;j<width;j++)
    System.out.print("=");
    System.out.println();
    }
    抱歉,前面的确实有问题,折回没有问题了,不过要求宽度是奇数,因为你每行有奇数个"*"号
      

  2.   

    是呀 这只是基本的数学问题如果你要严格的三角形图形的话
        *      1
      *****    1 + 2 * 2
    *********  1 + 2 * 2 * 2
    那么 高度与宽度之间还有一些联系
    这个算法也不太复杂对于 height 行 * 号
    宽度 =  4 * height - 3 所以反过来对于已知的宽度可以用 height = (宽度 + 3) / 4
    算出三角形所占用的高度>(*)的高度是(=)高度的1.5倍
    既然已知了 Height = 20
    那么
    (*)的高度 StarH = Height / 5 * 3
    (=)的高度 EqualH = Height / 5 * 2
    /*感觉是小学的计算题?*/这时就要考虑了
    如果 三角形所占用的高度 > (*)的高度
         那么以 StarH 为标准画三角形
    否则
         以 height 为标准画三角形
         再补完剩余的 StarH - height 行 (*)最后直接画 (=)
      

  3.   

    我是azhengjava,我来UP一下,我看大家都说的很好,我就不发表意见了