java 打印空心菱形的两种实现

时间:2023-03-10 02:34:24
java 打印空心菱形的两种实现

第一种实现方式:

//打印给定行数的空心菱形
public static void draw(int size){
if (size % 2 == 0) //如果是偶数行变为奇数
{
size++;
}
//中心点:2*size -1 ,实现的关键在于找准中心点,下面以打印7行的空心菱形为例进行分析
for (int i = 0; i < size/2+1; i++)//打印菱形上面的4行
{
for (int j = 0; j < 2*size - 1; j++)//每一行的总长度是2*size -1
{
if (j == (size -1-2*i) || j ==(size -1 + 2*i))//中心点左右两边对称的位置打印 * 号
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
for (int i = size/2-1; i >= 0; i--)//打印菱形下面的3行
{
for (int j = 0; j < 2*size - 1; j++)
{
if (j == (size -1-2*i) || j ==(size -1 + 2*i))//中心点左右两边对称的位置打印 * 号
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}

这是一个正方形里面有一个菱形:

java 打印空心菱形的两种实现

第二种实现方式:

    public static void draw2(int size){
if (size % 2 == 0)
{
size++;
} for (int i = 0; i < size/2 + 1; i++)
{
for(int j =size/2+1;j>i+1;j--){//打印菱形空上角位置的空白
System.out.print(" ");
}
for (int j = 0; j < 2*i+1; j++)//打印菱形的上半部分
{
if (j==0||j==2*i)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
} for (int i = size/2+1; i < size; i++)//打印菱形的下半部分
{
for (int j = 0; j < i - size/2; j++)//打印左下角的空白
{
System.out.print(" ");
}
for (int j = 0; j < 2 * size -1-2*i; j++)
{
if (j==0||j==2*(size -i -1))
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}

输出结果:

java 打印空心菱形的两种实现