热身题——JAVA实现输出n行菱形

时间:2022-05-02 20:11:43

获取用户输入的行数

Scanner sca=new Scanner(System.in);
System.out.println("请输入一个数字:");
int input=sca.nextInt(); //定义input变量用于存储用户输入的行数

此时,需要判断用户输入的数字是否为奇数

while(true)
{
if(input%2==0) //判断input是否为奇数
{
System.out.println("你的输入有误,请输入一个奇数:"); //如果不是奇数,则提醒用户重新输入
input=sca.nextInt(); //将重新输入的值再次存储到input中
}
else
{
break;
}
}

我们将一个菱形分为上下两个部分,上部分的行数定义为up,下部分的行数定义为down

int up=(input/2)+1;
int down=input/2;

然后,我们还需要定义输出每一行时的空格数space_1与space_2分别用于储存上部分的空格数与下部分的空格数

space_1=input/2;
space_2=1;
  *
***
*****
***
*

通过上面的菱形我们可以知道,当我们写菱形的上半部分的时候,空格数是逐渐减少的,每一行减少一个空格;菱形的下半部分空格数是逐渐增加的,每一行增加一个空格。而星号是逐渐增加的,星号的数量满足:1+2*(n-1)

下面,我们开始输出菱形的上半部分:

for(int i=1; i<=up;i++) //输出菱形的上半部分
{
for(int j=space_1;j>0;j--) //输出空格
{
System.out.print(" ");
}
for(int k=1;j<=(1+2*(i-1));k++) //输出“*”
{
System.out,println("*");
}
System.out.println(); //输完一行之后换到下一行
space_1--;
}

我们再接着输出菱形的下半部分:

for(int i=down;i>0;i--) //输出菱形的下半部分
{
for(int j=1;j<=space_2;j++)//输出空格

{
System.out.print(" ");
}
for(int k=(1+2*(i-1));k>0;k--)//输出“*”
{
System.out.print("*");
}
System.out.println();
space_2++;
}