我正在尝试做到这一点,以便用户在金字塔的底行输入奇数个星星。该程序将仅使用小于一个输入的奇数整数来构建该金字塔。在金字塔的外面是下划线。
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,我实际上得到了什么:
______*
_____***
____*****
___*******
__*********
_***********
*************
答案 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();
}