尝试创建一个循环,根据用户的输入输出星形和下划线以外的金字塔图案

时间:2019-10-04 22:43:52

标签: loops

我正在尝试做到这一点,以便用户在金字塔的底行输入奇数个星星。该程序将仅使用小于一个输入的奇数整数来构建该金字塔。在金字塔的外面是下划线。

String result = "";
int sideWidth = -1, midWidth = -1;
for (int i=1; i<=numSymbols ; i++) 
{ 
    for (int j=numSymbols; j>i; j--)
    {
        System.out.print("_");
    }
    for (int k=1; k<=(i * 2) -1; k++)
    {
        System.out.print("*");
    }
    System.out.println();
}
return result;

如果用户输入7,则预期输出:

___*___
__***__
_*****_
*******

如果用户输入7,我实际上得到了什么:

______*
_____***
____*****
___*******
__*********
_***********
*************

1 个答案:

答案 0 :(得分:0)

您需要使用numSymbols / 2 + 1而不是numSymbols,因为对于7 numSymbols只需要4行。同样,_循环应类似于j = numSymbols / 2; j >= i,并重复两次;一在星星之前,一在星星之后。最后,您不需要使用“ k”。

for (int i = 1; i <= numSymbols / 2 + 1; i++) 
{ 
    for (int j = numSymbols / 2; j >= i; j--)
    {
        System.out.print("_");
    }
    for (int j = 1; j <= i * 2 - 1; j++)
    {
       System.out.print("*");
    }
    for (int j = numSymbols / 2; j >= i; j--)
    {
        System.out.print("_");
    }
    System.out.println();
}

更简单的形式:

for (int i = 1; i <= numSymbols; i += 2) 
{ 
    for (int j = numSymbols / 2; j >= i / 2; j--)
        System.out.print("_");
    for (int j = 1; j <= i; j++)
       System.out.print("*");
    for (int j = numSymbols / 2; j >= i / 2; j--)
        System.out.print("_");
    System.out.println();
}